2008-09-25 11 views
5

mam kod jak poniżej:Jak wyłączyć Javascript w mshtml.HTMLDocument (NET)

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

Jednak kiedy załadować HTML tak, że wykonuje wszystkie skrypty JavaScript w niej, jak również robi żądanie do niektórych zasobów z kodu "html".

Chcę wyłączyć javascript i wszystkie inne wyskakujące okienka (np. Błąd certyfikatu).

Moim celem jest użycie DOM z dokumentu mshtml, aby wyodrębnić tagi z kodu HTML w niezawodny sposób (zamiast pęczka wyrażeń regularnych).

Czy istnieje kolejna biblioteka DLL IE/Office, którą mogę po prostu załadować HTML bez myślenia o tematach związanych z IE lub aktywnych skryptach?

Odpowiedz

1

Jeśli masz już "html" jako napis i chcesz uzyskać dostęp do jego widoku DOM, po co "renderować" go do kontrolki przeglądarki?

Nie jestem zaznajomiony z technologią .Net, ale musi istnieć jakiś rodzaj rzeczy typu StringToDOM/StringToJSON, który lepiej odpowiada Twoim potrzebom.

Podobnie, jeśli zmienna "html", której używasz powyżej, jest adresem URL, to po prostu użyj wget lub podobnego, aby pobrać znacznik jako ciąg i przeanalizuj odpowiednie narzędzie.

Poszukuję biblioteki .Net XML/DOM i używam tej. (znowu, mógłbym pomyśleć, że to będzie część języka, ale nie jestem pewien)

PS po szybkim Google Znalazłem to (source). Nie jestem pewien, czy to by pomogło, gdybyś użył tego w swoim dokumencie HTMLDocument.

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

Wygląda na to, że ekranizujesz jakiś zasób, a następnie próbujesz programowo zrobić coś w wyniku HTML?

Jeśli wiesz, że jest on prawidłowy XHTML przed czasem, to załaduj łańcuch XHTML (który jest tak naprawdę XML) do obiektu XmlDocument i pracuj z nim w ten sposób.

W przeciwnym razie, jeśli jest to potencjalnie nieprawidłowy lub nie prawidłowo uformowane, HTML to musisz coś podobnego hpricot (ale to jest biblioteką Ruby)

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

Działa jak urok –

0

Jeśli dobrze pamiętam MSHTML automatycznie dziedziczy ustawienia IE.

Jeśli więc wyłączysz javascript w Internet Explorerze dla użytkownika, który wykonuje kod, to JavaScript nie powinien działać w MSHTML.

Powiązane problemy