![](/img/trans.png)
[英]jQuery.trigger('click') doesn't work in Chrome Extension on Mac
[英]Chrome Extension - Trigger not Work
我尝试创建简单的Chrome扩展程序,在弹出窗口中单击按钮后,我需要将函数setInput()发送到页面,函数更改值,并且如果要在Chrome控制台中使用此函数,则需要使用Trigger('keyup')-触发器工作。 但是,如果我在弹出窗口中单击后发送此功能-触发器不起作用(
Chrome扩展程序-触发器不起作用
控制台-触发工作
popup.html
<head>
<script src="popup.js"></script>
</head>
<body>
<div class="btn">Click</div>
</body>
popup.js
function sendMessage() {
chrome.tabs.query({currentWindow: true, active: true}, function (tabs){
var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "start"});
});
}
function onWindowLoad() {
chrome.tabs.executeScript(null, { file: "PageReader.js" });
}
document.addEventListener("DOMContentLoaded", function() {
var btn = document.querySelector('.btn');
btn.addEventListener('click', function() {
sendMessage();
});
});
window.onload = onWindowLoad;
PageReader.js
- in file top i include Jquery
function setInput() {
var input = $('.text input');
input.val('1111').trigger('keyup');
}
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "start" ) {
setInput();
}
}
);
谢谢大家的帮助,我找到了答案,删除了jQuery,并创建了事件“ keyup”
旧:
var input = $('.text input');
input.val('1111').trigger('keyup');
新:
var evt = document.createEvent('KeyboardEvent');
evt.initEvent('keyup', true, true);
var input = document.querySelector('.text input');
input.value = '1111';
input.dispatchEvent(evt);
如果已附加此事件处理程序btn.addEventListener('click', function() {
请在btn.addEventListener('click', function() {
之后btn.addEventListener('click', function() {
debugger
。
第二件事 -您可能希望将初始化代码包装到setTimeout
调用中,假设延迟为100ms,以检查您正在处理的页面是否不仅在某些生成此HTML的框架上工作,而且在DOMContentLoaded
之后完成。 这意味着基本上将所有东西都包裹在内
document.addEventListener("DOMContentLoaded", function() {
与setTimeout(function() {/*everything inside goes here*/}, 100)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.