【问题标题】:How can I make a Chrome extension automatically click a button when a page loads?如何让 Chrome 扩展程序在页面加载时自动单击按钮?
【发布时间】:2012-07-08 23:41:25
【问题描述】:

我正在尝试创建一个在页面加载时按下按钮的 Google Chrome 扩展程序。通过使用以下代码,我已经能够使用 VBscript for 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();

Google-Chrome的javascript中好像没有定义.click.submit

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

javascript:changeIframe();

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

我只需要知道我必须在我的 .js 中放入什么,以便在页面加载时自动按下按钮。

【问题讨论】:

  • 不知道你为什么要费心使用VBScript,因为它只能在IE中工作。
  • 我可以用 IE 做任何我想做的事情,它运行良好,但 IE 不允许我同时运行超过 30 个实例,这就是我转向谷歌浏览器的原因

标签: javascript button google-chrome-extension content-script


【解决方案1】:

执行此操作的传统方法是注入代码1

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

document.body.appendChild (scriptNode);


您通常也不必收听onload,因为默认情况下内容脚本将大致在该点触发。



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

【讨论】:

  • 成功了!成功了,天哪,我已经处理这个问题一个月了,你刚刚为我解决了,谢谢,非常感谢,
  • 我只是不知道怎么谢谢你,你的电子邮件是什么,我必须给你寄一张亚马逊礼品卡,以纪念你为我所做的一切,哦,天哪,我简直不敢相信它有效
【解决方案2】:

很高兴您找到了解决方案,但我想我会向您展示另一种模拟点击的方式。
通过这种方式,您不必注入代码或知道 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);

【讨论】:

  • 它可以帮助我完成任务。我一直在寻找“单击”具有角色 =“按钮”的类的方法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多