【发布时间】:2013-09-10 20:39:06
【问题描述】:
我想显示/隐藏文本...我了解 Manifest 2 的基本知识并成功实现了一个使用事件监听器的 javascript 下拉菜单...
当我在 Google 中打开 popup.html 作为网站时,这个简单的代码就可以工作。它在实际扩展中不起作用(单击徽标)。
出于安全原因,我想我需要一个监听器或类似的东西......但不知道如何让它工作。
目标是能够显示/隐藏当您在 Chrome 中单击扩展程序的徽标/按钮时出现的 popup.html 页面中可见的文本块。任何帮助深表感谢...
HTML:
<a id="displayText" href="javascript:toggle();">show</a> <== click Here
<div id="toggleText" style="display: none"><h1>Hello world</h1></div>
JS:
function toggle() {
var ele = document.getElementById("toggleText");
var text = document.getElementById("displayText");
if(ele.style.display == "block") {
ele.style.display = "none";
text.innerHTML = "show";
}
else {
ele.style.display = "block";
text.innerHTML = "hide";
}
}
提问后更新:
非常感谢您的回复...
这是一个非常简单的扩展...是的,三个文件:manifest.json、popup.html 和 popup.js。
当您单击图标时弹出窗口显示 - 一切都很好,除了一点点 javascript 来使显示/隐藏工作。
我没有收到错误 - 它只是不起作用(也许有办法查看错误?)。我认为安全模型正在阻止 js 运行。
简单的下拉菜单也发生了同样的事情,但我通过在 js 文件中添加侦听器来解决它。下面的示例适用于跳转菜单......所以我很困惑如何让显示/隐藏代码中的简单 js 工作。
Function init() {
jump = document.getElementById('jumpchoice');
jumpowl = document.getElementById('jumpchoiceowl');
jumpmla = document.getElementById('jumpchoicemla');
jumpapa = document.getElementById('jumpchoiceapa');
jump.addEventListener('change',jumpto,false);
jumpowl.addEventListener('change',jumptoowl,false);
jumpmla.addEventListener('change',jumptomla,false);
jumpapa.addEventListener('change',jumptoapa,false);
}
document.addEventListener('DOMContentLoaded', init);
【问题讨论】:
-
那么,你的扩展中有三个文件?(1)manifest.json(2)popup.html(3)popup.js(不是background.js)对吗?此外,当您单击页面操作或浏览器操作的图标时,是否会出现弹出窗口?你遇到了什么错误?你的 manifest.json 是什么样的?
-
非常感谢您的回复...这是一个非常简单的扩展...是的,三个文件:manifest.json、popup.html 和 popup.js。当您单击图标时,弹出窗口会显示 - 一切都很好,除了一点点 javascript 来使显示/隐藏工作。
-
我在原帖中添加了一些细节...谢谢您的观看。
-
>也许有办法查看错误?是的,有一种方法可以查看 popup.html 中的错误。查看此页面以了解如何调试 Chrome 扩展程序。 developer.chrome.com/extensions/tut_debugging.html
-
谢谢...单击我的 js 链接(“显示”)会引发与安全相关的错误。这里是:拒绝执行 JavaScript URL,因为它违反了以下内容安全策略指令:“script-src 'self' chrome-extension-resource:”。我没有看到说明如何为此类事件添加侦听器...只是有关添加事件侦听器的基本说明...感谢您的帮助...