2008-09-25 8 views
5

मैं इस तरह एक कोड मिल गया है:mshtml.HTMLDocument (.NET) में जावास्क्रिप्ट को अक्षम कैसे

Dim Document As New mshtml.HTMLDocument 
Dim iDoc As mshtml.IHTMLDocument2 = CType(Document, mshtml.IHTMLDocument2) 
iDoc.write(html) 
iDoc.close() 

लेकिन जब मैं भी एक HTML इस तरह इसमें सभी Javascripts कार्यान्वित लोड अनुरोध कर के रूप में "एचटीएमएल" कोड से कुछ संसाधनों के लिए।

मैं जावास्क्रिप्ट और अन्य सभी पॉपअप (जैसे प्रमाण पत्र त्रुटि) को अक्षम करना चाहता हूं।

मेरा उद्देश्य एचटीएमएल से कुछ टैग को विश्वसनीय तरीके से निकालने के लिए एमएमटीएमएल दस्तावेज़ से डीओएम का उपयोग करना है (रेगेक्स के गुच्छा के बजाय)।

या क्या कोई अन्य आईई/ऑफिस डीएलएल है जिसे मैं आईई से संबंधित पॉपअप या सक्रिय स्क्रिप्ट के बारे में सोचने के लिए एक HTML लोड कर सकता हूं?

उत्तर

1

यदि आपके पास पहले से ही एक स्ट्रिंग के रूप में 'html' है, और आप बस इसके DOM दृश्य तक पहुंच चाहते हैं, तो इसे ब्राउज़र नियंत्रण में "प्रस्तुत" क्यों करें?

मैं नेट तकनीक से परिचित नहीं हूं, लेकिन कुछ प्रकार की स्ट्रिंगटॉडम/स्ट्रिंगटोज़ोन प्रकार की चीज है जो आपकी आवश्यकताओं के अनुरूप बेहतर होगी।

इसी प्रकार, यदि ऊपर दिए गए 'एचटीएमएल' चर का उपयोग यूआरएल है, तो बस स्ट्रिंग के रूप में मार्कअप को पुनः प्राप्त करने के लिए wget या समान का उपयोग करें, और एक लागू उपकरण के साथ पार्स करें।

मैं एक .NET XML/DOM लाइब्रेरी की तलाश करता हूं और इसका उपयोग करता हूं। (फिर से, मुझे लगता है कि यह भाषा का हिस्सा होगा, लेकिन मुझे यकीन नहीं है)

एक त्वरित Google के बाद पीएस ने मुझे यह पाया (source)। सुनिश्चित नहीं है कि यह मदद करेगा, अगर आप इसके बजाय अपने HTML दस्तावेज़ में इसका उपयोग करना चाहते हैं।

if(typeof(DOMParser) == 'undefined') { 
     DOMParser = function() {} 
     DOMParser.prototype.parseFromString = function(str, contentType) { 
     if(typeof(ActiveXObject) != 'undefined') { 
     var xmldata = new ActiveXObject('MSXML.DomDocument'); 
     xmldata.async = false; 
     xmldata.loadXML(str); 
     return xmldata; 
    } else if(typeof(XMLHttpRequest) != 'undefined') { 
     var xmldata = new XMLHttpRequest; 
     if(!contentType) { 
      contentType = 'application/xml'; 
     } 
     xmldata.open('GET', 'data:' + contentType + ';charset=utf-8,' + encodeURIComponent(str), false); 
     if(xmldata.overrideMimeType) { 
      xmldata.overrideMimeType(contentType); 
     } 
     xmldata.send(null); 
     return xmldata.responseXML; 
    } 
    } 
} 
0

ऐसा लगता है कि आप कुछ संसाधन स्क्रीनस्क्रेप रहे हैं, तो प्रोग्राम के रूप में कुछ w/जिसके परिणामस्वरूप HTML करने के लिए कोशिश कर रहा?

यदि आपको पता है कि यह समय से पहले एक्सएचटीएमएल मान्य है, तो XmlDocument ऑब्जेक्ट में एक्सएचटीएमएल स्ट्रिंग (जो वास्तव में एक्सएमएल है) लोड करें, और इस तरह से इसके साथ काम करें।

अन्यथा, अगर यह संभावित रूप से अमान्य, या नहीं सही तरीके से लिखे है, एचटीएमएल तो आप hpricot की तरह कुछ तो मुझे याद है सही ढंग से MSHTML स्वचालित रूप से सेटिंग इनहेरिट करनी होगी (लेकिन है कि एक रूबी पुस्तकालय है)

5
Dim Document As New mshtml.HTMLDocument 
Dim iDoc As mshtml.IHTMLDocument2 = CType(Document, mshtml.IHTMLDocument2) 
'add this code 
iDoc.designMode="On" 
iDoc.write(html)iDoc.close() 
+0

एक आकर्षण की तरह काम करता है –

0

आईई का

तो यदि आप कोड निष्पादित करने वाले उपयोगकर्ता के लिए इंटरनेट एक्सप्लोरर में जावास्क्रिप्ट को अक्षम करते हैं तो जावास्क्रिप्ट को एमएसएचटीएम में भी नहीं चलना चाहिए।

संबंधित मुद्दे