繁体   English   中英

Chrome扩展程序-触发器不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM