3

ページの読み込み時にボタンを押すGoogleChrome拡張機能を作成しようとしています。次のコードを使用して、InternetExplorer用のVBscriptを使用してボタンをトリガーすることができました。

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

しかし、今は拡張機能を介してGoogleChromeでそれを行う必要があります。ただし、ボタンにはIDがありません。

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

これが私がこれまでに試したことですが、何も機能していないようです。

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

.clickGoogleで定義されていないようです.submit-Chromeのjavascript?

奇妙なことに、このスクリプトを使用すると、次のようになります。

javascript:changeIframe();

ChromeのJavaScriptコンソールでは、ボタンが自動的に押され、すべてが正常に機能します。しかし、同じスクリプトを.jsファイルに入れると、機能しません。

ページの読み込み時にボタンを自動的に押すには、.js内に何を入れる必要があるかを知る必要があります。

4

2 に答える 2

11

これを行う従来の方法は、コード1を挿入することです。

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

document.body.appendChild (scriptNode);


onloadコンテンツスクリプトはデフォルトでその時点で大まかに起動する ため、通常はどちらもリッスンする必要はありません。



1拡張機能JSは「分離された世界」で動作し、ここで必要とされないいくつかのトリックなしではページのjavascriptと対話することはできません。

于 2012-07-09T00:36:09.167 に答える
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);
于 2012-07-09T09:36:36.260 に答える