3

私のポップアップページには、ボタンのあるiframeタグがあります。このボタンをクリックすると、iframe のスクリプトに含まれる関数が呼び出されます。この関数には への呼び出しが含まれていますが、 「Uncaught TypeError: 未定義のメソッド 'create' を呼び出せません」というメッセージchrome.tabs.create({ url: "..."});が表示され続けます。その理由は、ポップアップページ自体ではなく、iframe にいるためだと思います。

そのあいまいさを克服し、iframe 内から新しいタブを作成する方法はありますか?

編集

これが私のコードです。

以下がポップアップ ページの iframe に読み込まれます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style/frame_style.css" media="screen" />
  <script src='jquery-1.8.3.js'></script>
  <script src='scripts/frame_functions.js'></script>
</head>

<body>
  <div>
    <button value="Click to open Google in a new tab" class='new_tab_bt'></button>
  </div>
</body>
</html>

frame_functions.js:

$(document).on("click", '.new_tab_bt', function(){
  openNewTab(); 
});

function openNewTab()
{
chrome.tabs.create({ url: "https://www.google.com" });
}
4

1 に答える 1

0

あなたのコードは変更なしで機能しています。参照として作業コードを追加しました。のターゲット ソース HTML ページはどこにありますiframeか。ブラウザ アクション ポップアップからどのように参照しましたか。これで解決しない場合はiframe、ブラウザ アクション ポップアップからどのように参照したかを共有してください。

作業バージョン

マニフェスト.json

シンプルなコード、登録済みbrowser action

{
    "name": "Iframe Holder",
    "description": "http://stackoverflow.com/questions/14429598/chrome-extension-create-tab-from-within-an-iframe-in-popup",
    "version": "1",
    "manifest_version": 2,
    "browser_action": {
        "default_popup": "popup.html",
        "default_title": "Iframe."
    }
}

popup.html

popupブラウザ アクションのインクルード先ページ。

<html>

    <body>
        <iframe width="300" height="300" src="iframe.html"></iframe>
    </body>

</html>

iframe.html

コードを使用し、関連しない css ファイルなどを削除しました

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src='jquery.js'></script>
        <script src='iframe.js'></script>
    </head>

    <body>
        <div>
            <button value="Click to open Google in a new tab" class='new_tab_bt'></button>
        </div>
    </body>

</html>

iframe.js

コードを変更せずに使用

$(document).on("click", '.new_tab_bt', function () {
    openNewTab();
});

function openNewTab() {
    chrome.tabs.create({
        url: "https://www.google.com"
    });
}
于 2013-01-21T08:33:52.687 に答える