我正在使用一个插件,在点击带有特殊html的按钮时打开一个新标签。现在,html文件位于一个专用的网站空间,但有一个解决方法,这意味着,我可以将html文件放在插件本身的数据结构中并从那里访问它吗?问题是,当通过连接按钮点击按钮并且我在该html中使用AngularJS这似乎是一个问题时,我提供了活动网站的网址。
我的代码:
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)
}
任何想法?
干杯!
答案 0 :(得分:2)
理论上,我没有看到任何问题。 将HTML文件放在数据文件夹中,然后通过以下方式访问它:
var file = data.url("overlay.html");
编辑:M.Onyshchuk说这会触发
是正确的地址无效
错误。我没想到“:”。为了解决这个问题,只需从URL中删除协议信息即可。
currUrl = currUrl.replace(/^https?\:\/\//i, "");
要在插件中使用AngularJS,最简单的方法是简单地将当前版本与您的插件一起发送。下载最新版本,将其放入数据文件夹,然后只需按照通常的方式在HTML文件中访问它。
虽然我不熟悉AngularJS,但我想不出有什么理由不适用。
祝你的项目好运!
Sintho
答案 1 :(得分:1)
仅更改文件加载URI是不够的:
var file = data.url("overlay.html");
在这种情况下,您会看到错误为
地址无效
但是你可以修改你的代码并发送当前标签页不是作为URI的查询部分,而是作为片段部分:
let currUrl = tabs.activeTab.url;
currUrl = currUrl.replace(":", "%");
var file = data.url("overlay.html");
var completePath = file.concat("#").concat(currUrl);
不幸的是 encodeURIComponent 不起作用:
let currUrl = encodeURIComponent(tabs.activeTab.url); // The address isn't valid
您需要在overlay.html
中使用解析片段URI(在#之后)