0

我是Firefox的扩展开发新手,一般在移动版本中,而且我面临的这个问题让我疯狂。getElementsByName在firefox mobile的restartless(bootstrapped)扩展中

我需要提取具有特定标记名称的元素,例如或<p><script>。当然,我想过使用getElementsByTagName(),但它不适合我。此外,我不知道我应该把它放在哪里,因为当我将它链接到门锁按钮中的某个功能时,它不起作用。如果我更改为启动函数,它将显示警报窗口,但是会显示一个空结果(空值)。

我真的陷入困境,我需要你的帮助。这里,代码行我使用为:

doc=getBrowser().selectedTab.linkedBrowser.contentDocument; 
frames=doc.getElementsByTagName("script"); 

我只显示所提取的元件的阵列的长度在一个警告窗口,并在烤面包,当我在doorhanger按下一个按钮:

label: "JavaScript",// the button label in the doorhanger 
callback: function() { 
    Services.prompt.alert(null,"the iframes ","Frames Tag shown "+frames.length);// the alert window 
    aWindow.NativeWindow.toast.show("Frames Tag shown "+frames.length, "long");//the toast 
} 
+0

请添加你如何使用'frames'片段。 – Teemu 2013-02-23 12:41:48

+0

我只是在警报窗口中显示提取元素数组的长度,当我按下门锁中的按钮时: – user2102196 2013-02-23 13:02:53

回答

0

以及感谢所有您的帮助,我找到了解决办法:该代码绑定到显示doorhanger菜单按钮:

init();// initialization of the vriables otherwise it won't work 
    var tab = window.BrowserApp.selectedTab; 
    doc = tab.window.document;// getting the DOM 
    iframes=doc.getElementsByTagName("iframe");// the the iframes 
0

桌面和移动扩展之间有很多不同。首先,后者不提供全局getBrowser()或gBrowser。相反,你必须使用BrowserApp object

+0

我已经尝试过,tab = BrowserApp.selectedTab,但我不知道如何访问要获取元素的Tab的DOM。 – user2102196 2013-02-23 14:48:46

+0

BrowserApp页面有一个指向Tab对象页面的链接。 – paa 2013-02-23 15:52:25

+0

我试过了,但还是不行。他们是否有任何想法或建议:var ios = Components .classes [“@ mozilla.org/network/io-service;1”] .getService(Components.interfaces.nsIIOService); doc = BrowserApp.selectedTab.window.document; frames = doc.getElementsByTagName(“script”); – user2102196 2013-02-23 18:30:39