2016-07-15 2 views
0

특수 HTML 버튼을 클릭하면 새 탭이 열리는 addon에서 작업하고 있습니다. 지금, html 파일은 전용 웹 공간에 있습니다. 그러나 거기에 대한 해결책이 있습니다. 즉, html 파일을 addon 자체의 데이터 구조에 넣고 거기에서 액세스 할 수 있습니까? 문제는 단추를 연결하여 URL을 클릭 할 때 활성 사이트의 URL을 전달하고 해당 HTML 내에서 AngularJS를 사용하여 문제가있는 것입니다.firefox addon에서 html 파일에 액세스

내 코드 :

하는 index.js :

var { ActionButton } = require("sdk/ui/button/action"); 
var tabs = require("sdk/tabs"); 
var data = require("sdk/self").data; 

var button = ActionButton({ 
    id: "my-button", 
    label: "Start LLIBrowser", 
    icon: { 
    "16": "./img/logo-16.png" 
    }, 
    onClick: showPlugIn 
}); 

function showPlugIn(state){ 
    let currUrl = tabs.activeTab.url; 
    //var file = "file:///home/janine/OneDrive/Uni/OvGU/4. Semester/SoftwareProjekt/LLIBrowserGalleryAndInfo/data/overlay.html"; just for testing 
    var file = "http://www-e.uni-magdeburg.de/jpolster/LLIBrowser/overlay.html"; 
    var completePath = file.concat("?url=").concat(currUrl); 

    tabs.open(completePath) 
} 

어떤 아이디어?

건배!

답변

2

이론상으로는 아무런 문제가 없습니다. 데이터 폴더에 HTML 파일을 배치하고 접근을 통해 :

편집
var file = data.url("overlay.html"); 

: M.Onyshchuk이가

주소를 게재 할 것을 말하는 올바른 유효하지 않습니다

오류. 나는 ":"을 생각하지 않았다. 이 문제를 해결하려면 간단히 URL에서 프로토콜 정보를 제거하십시오.

여전히 addon에서 AngularJS를 사용하려면 가장 쉬운 방법은 addon으로 현재 버전을 제공하는 것입니다. 최신 버전을 다운로드하여 데이터 폴더에 저장하고 평상시대로 HTML 파일에 액세스하십시오.

저는 AngularJS에 익숙하지 않지만 이것이 작동하지 않아야하는 이유를 생각할 수 없습니다.

프로젝트가 성공적으로 완료되었습니다.

Sintho

1

URI 파일 로딩을 변경하는 것만으로는 충분하지 않습니다 :

var file = data.url("overlay.html"); 

당신은

주소로이 경우 오류가 발생합니다 유효하지 않습니다

하지만 코드를 수정하고 현재 탭 URL을 보낼 수 있습니다. ERY의 URI의 일부지만, 조각 일부로 :

let currUrl = tabs.activeTab.url; 
    currUrl = currUrl.replace(":", "%"); 
    var file = data.url("overlay.html"); 
    var completePath = file.concat("#").concat(currUrl); 

불행하게도 에 encodeURIComponent이 작동하지 않습니다 : 당신은 overlay.html

에 조각 URI를 (# 후) 구문 분석해야합니다

let currUrl = encodeURIComponent(tabs.activeTab.url); // The address isn't valid 

관련 문제