1

Google Chrome の最初のユーザー スクリプトを作成しようとしています。ルーターのページを確認し、有効な IP アドレスを取得するまで再接続します。

スクリプトを IPchecker.user.js として保存し、拡張機能ページから Google Chrome にインストールしました。しかし、ページを更新すると、javascript コンソールがエラーをスローします。

Uncaught ReferenceError: wan_connect is not defined 

この場合、wan_connect は元のページで定義された関数です。

<html>
<head>
<script type="text/javascript">
    function serv(service, sleep)
    {
     form.submitHidden('service.cgi', { _service: service, _redirect: 'status-overview.asp', _sleep: sleep });
    }
    function wan_connect(wanid)
    {
     if (wanid == "1") {
     serv('wan1link-restart', 5);
     }
     if (wanid == "2") {
     serv('wan2link-restart', 5);
     }
    }

    //All other stuff deleted...

</script>
</head>
<body> Also deleted...</body>
</html>

これが私のスクリプトです。元のページからの機能を認識していないようです。それを呼び出す方法はありますか?

// ==UserScript==  
// @name         WAN checker
// @version      0.0.1
// @description  Check tomato IP addresses and reconnect as needed
// @match        *://192.168.1.1/status-overview.asp
// ==/UserScript== 

(function reconnect() {
    wan1ip = document.getElementById('wanip').getElementsByClassName('content')[0].innerText.split('.').slice(0,2).join('.');

    if (wan1ip != "333.3333") {
    wan_connect("1");
    setTimeout("reconnect()",2000);
    }
    wan2ip = document.getElementById('wan2ip').getElementsByClassName('content')[0].innerText.split('.').slice(0,2).join('.');
if (wan2ip != "333.333") {
    wan_connect("2");
    setTimeout("reconnect()",2000);
    }
})();
4

2 に答える 2

2

はい、いくつかの方法でそのコードを呼び出すことができます。

  1. 適切なソース コードをスクリプトに貼り付けます。

    また

  2. 元のページを iframe で呼び出し、そこから関数を呼び出します。同じドメインの iframe の方が簡単ですが、これはクロスドメインでも行うことができます。

    また

  3. GM_xmlhttpRequest()元のページのソース コードを取得するために使用します。ソースから適切なスクリプト ノードを抽出し、そのコードを現在のターゲット ページに挿入します。

これらのアプローチはすべて、以前の質問である程度カバーされています。

于 2012-10-12T22:01:57.557 に答える
1

いいえ、あるページのスクリプトを別のページから呼び出すことはできません。コードを使用する必要があるすべてのページにコードを含める必要があります。

JavaScript からページにスクリプトをロードするために使用できるスクリプト ロード用のライブラリ (RequireJS など) がありますが、そのようにスクリプトをロードできるようにしておく必要があります。

于 2012-10-12T21:25:40.927 に答える