我知道我们可以显示一个带有小部件或面板的弹出窗口,并且弹出窗口围绕扩展图标,我知道这在 chrome 扩展开发中很容易。现在我想用 javascript 创建一个弹出窗口。
我的想法是,当我单击图标按钮时,它会向内容脚本发送一条消息(包括 iframe 的 html 页面的路径)。我的代码是:
nbBtn.addEventListener('click', function() {
var workers = tabs.activeTab.attach({
contentScriptFile: [ data.url("js/jquery-2.0.1.min.js"),
data.url("mycontent.js"),
data.url("js/tinybox2/packed.js"),
data.url("js/bootstrap.min.js"),
data.url("js/jquery.qrcode.min.js"),
data.url("js/2.5.3-crypto-sha1-hmac.js"),
data.url("js/moment.min.js"),
data.url("js/extension.utils.js")]
});
let content = encodeURIComponent(data.load("main.html"));
let url = "data:text/html;charset=utf-8," + content;
workers.postMessage(url);
}, false);
然后内容脚本显示一个带有消息的弹出窗口。代码是这样的:
var showBox = function(){
if(document.getElementById(iframeId)==null){
console.log("Creating frame...");
TINY.box.show({iframe:popupSrc, width:lgmBoxWidth, height:lgmBoxHeight, top:window.innerHeight*0.1, animate:true});
}
else{
console.log("Frame already exist.");
}
}
self.on('message', function(message) {
popupSrc = message;
showBox();
});
但是iframe的html页面( main.html
)不能正常显示是因为iframe页面中的js和css链接(如<link href="css/bootstrap-responsive.css" rel="stylesheet">
and <script src="js/jquery-2.0.1.min.js"></script>
)不起作用。那么我能做些什么来解决这个问题呢?谢谢。