MozillaPL.org - polskie centrum Mozilli

Główne menu:

Permission denied to get property Window.contentDocument

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

Permission denied to get property Window.contentDocument

Postautor: pizza » 22 lutego 2009, 01:26

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 Iceape/1.1.14 (Debian-1.1.14-1)

witam

Kilka dni temu rozpocząłem zabawę z XUL i natknąłem się na problem, który nie daje mi spać. Mam aplikację, która wyświetla stronę z jakiegoś serwera i chcę policzyć liczbę słów (tutorial ze stron http://www.ibm.com/developerworks/web/library/wa-xul1/ i http://www.ibm.com/developerworks/web/library/wa-xul2/).

Niestety nie mogę dobrać się do elementów z tej strony, gdyż za każdym razem pokazuje mi brak dostępu. Przetestowałem kilkanaście przykładów, ale efekt ciągle był ten sam :(

Poniżej załączam kod. Będę bardzo wdzięczny za wszelką pomoc.

Kod: Zaznacz cały
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        id="statswindow" title="View Web page stats">
  <vbox flex="1">
    <script type="application/x-javascript" src="stats.js"/>
    <hbox>
      <label value="Enter a URL:"/>
      <textbox id="url" flex="1" value="http://viable.pl"/>
      <button label="Go!" oncommand="change_url(event)"/>
    </hbox>
    <description value="Current page:"/>
    <hbox flex="1">
     <browser id="contentview" src="http://onet.pl" type="content-primary" flex="1"/>
    </hbox>
  </vbox>
</window>


Część z tego co próbowałem:
Kod: Zaznacz cały
function change_url(event)
{
//1
//var browser = document.getElementById('contentview');
//var doc = browser.webNavigation();

//2
//var mainWindow = //myBrowser.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
//.getInterface(Components.interfaces.nsIWebNavigation)
//.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
//.rootTreeItem
//.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
//.getInterface(Components.interfaces.nsIDOMWindow);

//3
//var editingSession = //myBrowser.webNavigation.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIEditingSession);
//myBrowser.contentDocument.designMode = 'on';
//var editor = //editingSession.getEditorForWindow(myBrowser.contentWindow);
//var commandManager = //myBrowser.webNavigation.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsICommandManager);
//var htmlEditor = //editor.QueryInterface(Components.interfaces.nsIHTMLEditor);

//4
//Use Firefox XPath to get the raw text of the document
//var doctext = contentview.contentDocument.evaluate(
//"string(.)", document, null, XPathResult.STRING_TYPE, //null).stringValue;

alert("done");
}
pizza
 
Posty: 3
Z nami od: 22 lutego 2009, 00:31

Postautor: pizza » 22 lutego 2009, 01:30

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 Iceape/1.1.14 (Debian-1.1.14-1)

Zapomniałem napisać, że testuję kod pod FF 3.0.6 (IceWeasel) z FireBug 1.3.2.

Cytowany kod okazał się za długi, sorry.
pizza
 
Posty: 3
Z nami od: 22 lutego 2009, 00:31

Postautor: Ancestor » 23 lutego 2009, 20:20

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

To, co próbujesz zrobić w pierwszych trzech "sposobach" wydaje się w ogóle nie mieć związku z tym, co chcesz osiągnąć. Trzeci jest na dobrym tropie, powinien działać, jeśli wcześniej dodasz.

Kod: Zaznacz cały
var contentview = document.getElementById('contentview');


Jaki dokładnie błąd pojawia się w konsoli?
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: pizza » 24 lutego 2009, 01:21

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 Iceape/1.1.14 (Debian-1.1.14-1)

Komunikat błędu to
Kod: Zaznacz cały
Permission denied to get property Window.contentDocument

i jest on wyświetlany przez FireBug. W Error Console nie mam żadnego błędu.

To co chcę zrobić to dobrać się do zawartości strony wyświetlanej w browser. Robię to najpierw pobierając element z browserem (czyli tak jak powiedziałeś: var contentview = document.getElementById('contentview');), potem staram się dobrać do elementów drzewa DOM i tu wywala się powyższy komunikat błędu :(
pizza
 
Posty: 3
Z nami od: 22 lutego 2009, 00:31


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: