我怎样才能让一个浏览器扩展程序自动点击一个按钮时,页面加载?(How can I make a Ch

2019-06-26 03:04发布

我试图创建一个谷歌浏览器扩展,压在页面加载的按钮。 我已经能够通过使用此代码触发使用VBScript Internet Explorer的按钮:

IE.Navigate("javascript:changeIframe();")

但是,现在我需要通过延长做到这一点在谷歌浏览器。 但是,按钮没有一个id:

<input type="button" value="Start!" onclick="javascript:changeIframe();">

这里是我到目前为止已经试过和似乎没有任何工作:

window.onload="javascript:changeIframe()";
javascript:changeIframe();
document.getElementById('').click();
document.getElementById('').submit();

看来, .click.submit没有在谷歌,Chrome的JavaScript的定义?

奇怪的是,当我使用这个脚本:

javascript:changeIframe();

在Chrome的JavaScript控制台,它会自动按下按钮,一切工作正常。 但是,当我把同样的脚本在我的js文件这是行不通的。

我只需要知道我必须把我的.js文件里面,以便自动按在页面加载的按钮。

Answer 1:

传统的方式做,这是注入代码1:

var scriptNode          = document.createElement ('script');
scriptNode.textContent  = 'changeIframe ();';

document.body.appendChild (scriptNode);


你通常需要监听onload或者,作为内容脚本将在此时默认大致火。



1扩展JS在“分离的世界”的动作和与页面的JavaScript没有,没有在这里需要一些技巧,不能互动。



Answer 2:

伟大的,你得到了一个解决方案,但认为Id告诉你模拟点击的另一种方式。
有了这样你没有注入代码或知道的onclick将运行功能,刚刚拿到按钮,模拟点击....

// https://developer.mozilla.org/en/DOM/element.dispatchEvent
function simulateClick(obj) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var canceled = !obj.dispatchEvent(evt);      
/*

  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
  */
}

var what = document.querySelector('input[type="button"][value="Start!"]');
simulateClick(what);


文章来源: How can I make a Chrome extension automatically click a button when a page loads?