如何在页面加载时自动点击Chrome扩展程序?

Cog*_*ase 3 javascript button google-chrome-extension content-script

我正在尝试创建一个Google Chrome扩展程序,在页面加载时按下按钮.我已经能够使用此代码使用VBscript为Internet Explorer触发按钮:

IE.Navigate("javascript:changeIframe();")
Run Code Online (Sandbox Code Playgroud)

但是,现在我需要通过扩展程序在Google Chrome中执行此操作.但是,该按钮没有id:

<input type="button" value="Start!" onclick="javascript:changeIframe();">
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的,似乎没有任何效果:

window.onload="javascript:changeIframe()";
javascript:changeIframe();
document.getElementById('').click();
document.getElementById('').submit();
Run Code Online (Sandbox Code Playgroud)

它似乎.click.submit没有在Google-Chrome的javascript中定义?

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

javascript:changeIframe();
Run Code Online (Sandbox Code Playgroud)

在Chrome的javascript控制台中,它会自动按下按钮,一切正常.但是,当我在.js文件中放入相同的脚本时,它不起作用.

我只需要知道我必须在我的.js中放置什么才能在页面加载时自动按下按钮.

Bro*_*ams 11

传统的方法是注入代码1:

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

document.body.appendChild (scriptNode);
Run Code Online (Sandbox Code Playgroud)


您通常也不必监听onload,因为默认情况下内容脚本会在此时大致触发.



1扩展JS在"孤立世界"中运行,如果没有一些不需要的技巧,就无法与页面的javascript交互.

  • 不需要额外的感谢.我们都去过那儿. (8认同)

PAE*_*AEz 8

很高兴您有一个解决方案,但我想我会向您展示另一种模拟点击的方法.
通过这种方式,你不必注入代码或知道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);
Run Code Online (Sandbox Code Playgroud)