【问题标题】:Chrome Extension Injected Javascript Button Changes PageChrome 扩展注入 Javascript 按钮更改页面
【发布时间】:2017-12-08 17:50:55
【问题描述】:

所以,我正在开发一个扩展程序,它会收集页面上某些文本字段中的值,并在另一个网站上搜索它们以确保它们没有被注册商标。

我在页面中注入了一个按钮,当我单击它时,它可以工作,但它也会将我引导到网站的主页,就好像我没有登录一样。但是,我仍然登录并且可以点击“返回”回到我原来的位置,但是我的所有文本字段都不再填写。这显然是最终用户的问题。

有什么想法吗?

这是我的内容脚本:

window.addEventListener("load", function load(event){

    var amz = document.getElementById("draft-field");
    var TMbutton = document.createElement("button");
    var text = document.createTextNode("TMHunt Your Product");
    TMbutton.className = "a-button a-button-primary scripter-button  button-fill"
    TMbutton.appendChild(text);
    amz.appendChild(TMbutton);

},false);

TMbutton.onclick = function() {
            chrome.runtime.sendMessage("test");
}

这确实创建了按钮并具有所需的效果,除了将我们弹出到不同页面的副作用。这是否与主机页面收到一条消息有关,以某种我没有看到的方式从我的 Javascript 执行某些操作?

【问题讨论】:

  • 可能父元素#draft-field 设置为在点击时更改页面。尝试阻止事件的传播e.stopPropagation()。
  • Ben 在下面得到它,很好的答案 ben!

标签: javascript google-chrome google-chrome-extension dom-events


【解决方案1】:

按钮默认类型为submit。您应该将类​​型设置为button,这样它就不会触发表单提交操作。

window.addEventListener("load", function load(event){

    var amz = document.getElementById("draft-field");
    var TMbutton = document.createElement("button");
    var text = document.createTextNode("TMHunt Your Product");
    TMbutton.className = "a-button a-button-primary scripter-button  button-fill";
    TMbutton.type = "button";
    TMbutton.appendChild(text);
    amz.appendChild(TMbutton);

},false);

TMbutton.onclick = function() {
    chrome.runtime.sendMessage("test");
}

【讨论】:

  • 你太棒了!
猜你喜欢
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多