[英]How can I make a Chrome extension automatically click a button when a page loads?
我正在尝试创建一个Google Chrome扩展程序,在页面加载时按下按钮。 我已经能够使用此代码使用VBscript为Internet Explorer触发按钮:
IE.Navigate("javascript:changeIframe();")
但是,现在我需要通过扩展程序在Google Chrome中执行此操作。 但是,该按钮没有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中放置什么才能在页面加载时自动按下按钮。
传统的方法是注入代码1 :
var scriptNode = document.createElement ('script');
scriptNode.textContent = 'changeIframe ();';
document.body.appendChild (scriptNode);
您通常也不必监听onload
,因为默认情况下内容脚本将大致在此时触发。
1扩展JS在“孤立世界”中运行,如果没有一些不需要的技巧,就无法与页面的javascript交互。
很高兴你有一个解决方案,但我想我会告诉你另一种模拟点击的方法。
通过这种方式,您不必注入代码或知道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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.