0

저는 파이어 폭스와 일반적으로 확장 기능 개발에 익숙합니다. 특히 모바일 버전에 익숙합니다.파이어 폭스 모바일을위한 restartless (bootstrapped) 확장자의 getElementsByName

특정 태그 이름 (예 : 또는 <p> 또는 <script>)을 사용하여 요소를 추출해야합니다. 당연히 나는 getElementsByTagName()을 사용하는 것에 대해 생각했지만 그것은 나를 위해 작동하지 않습니다. 게다가, 나는 문지기의 버튼에있는 함수에 링크 할 때 작동하지 않으므로 정확히 어디에 놓아야하는지 모르겠습니다. 시작 기능으로 변경하면 경고 창이 표시되지만 빈 결과 (null)가 표시됩니다.

저는 정말 붙어있어 당신 도움이 필요합니다. 다음 코드 라인은 내가 그것을 위해 사용하고 있습니다 : 나는 doorhanger에서 버튼을 누를 때

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

난 그냥, 경고 창에와 토스트에서 추출 된 요소의 배열의 길이를 표시하고 있습니다 :

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

+0

문고리의 버튼을 누르면 경고 창에 추출 된 요소 배열의 길이가 표시됩니다. – user2102196

답변

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

+0

BrowserApp 페이지에는 Tab 개체 페이지에 대한 링크가 있습니다. – paa

+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