单击事件以执行某些操作
Onclick event to do something
我正在制作一个非常完美的chrome扩展,我想在一个想法上得到一些帮助。
我已经通过清单文件将我的扩展设置为仅在我的网站中工作。
现在我想要用户,当他们在我的网站上用类按下按钮时
layerConfirm
扩展程序应该打开一个新的选项卡,其中包含我想要的链接。
var element = document.getElementsByClassName('layerConfirm');
element.onclick = function() {
chrome.tabs.create({
url: "http://example.com/"
});
};
如果我把这些代码放在文件"background.js"中,它会工作吗?你的意见是什么?
更新:或者我应该把以下代码放在popup.js文件中?
document.addEventListener('DOMContentLoaded', function() {
var element = document.getElementsByClassName('layerConfirm');
element.onclick = function() {
chrome.tabs.create({
url: "http://example.com/"
});
};
});
由于按钮在网站上,您不能在弹出脚本或后台脚本中使用onclick处理程序,因为它们是完全独立的文档,请参阅扩展架构文档。
现在,由于该网站是您的,显而易见且最简单的解决方案是将按钮包装在html:内的链接中
<a href="http://example.com/" target="_blank"><button class="layerConfirm">123</button></a>
完成!
否则,您将不得不使用消息传递,因为chrome.tabs.create
在内容脚本中不起作用。
在yoursite.com上注入的内容脚本:
document.querySelector('.layerConfirm').addEventListener('click', function() { chrome.runtime.sendMessage({action: 'confirmed'}); });
后台脚本:
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) { if (msg.action == 'confirmed') { chrome.tabs.create({url: "http://some.url"}); } });
document.getElementsByClassName
返回具有该类的所有元素的数组列表,该列表附带元素。如果DOM中只有一个元素具有此类,则可以像document.getElementsByClassName('layerConfirm')[0]
一样使用它,否则使用id属性
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 当通过AJAX调用时,控制器操作不会执行
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 点击:更改位置后执行某些操作
- 无法执行文件.退出Acrobat PDF中的操作
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 如何在ListView项模板中获取按钮来执行不同的操作
- 单击元素两次后执行操作
- ReactJS只有在操作完成后才能执行某些操作
- toogleClass函数来切换元素类并在事件期间执行某些操作
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- Var工作,但在使用数组执行相同操作时停止
- 如何在mvc3中执行操作而不更改当前页面
- jQuery:$.ajax() 重定向到其 URL 表单操作参数,而不是对表单操作执行 AJAX 请求
- 如何为多个操作执行简单的 jQuery
- Redux 转换到操作执行后
- 反流操作执行后触发通知/回调
- jquery如果按钮点击了执行其他操作执行其他操作
- 在操作执行之前禁用锚链接