Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用chrome extension中的其他页面替换弹出窗口?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 如何用chrome extension中的其他页面替换弹出窗口?

Javascript 如何用chrome extension中的其他页面替换弹出窗口?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我创建了一个在Firefox中工作的扩展。 我把它改成谷歌浏览器,但它不工作。 当我点击扩展的图标,然后弹出显示两个菜单选项。 但当我点击这些链接时,什么都没发生。如果我右键单击这些链接中的任何一个并选择“在新选项卡中打开”,那么这个html文件将显示在新选项卡中。如果我单击这个新选项卡中的链接,php文件将打开并工作,所以我认为window.location.replace在crome扩展中不工作 有人知道我该如何解决这个问题吗 manifest.json { "browser_action"

我创建了一个在Firefox中工作的扩展。 我把它改成谷歌浏览器,但它不工作。 当我点击扩展的图标,然后弹出显示两个菜单选项。 但当我点击这些链接时,什么都没发生。如果我右键单击这些链接中的任何一个并选择“在新选项卡中打开”,那么这个html文件将显示在新选项卡中。如果我单击这个新选项卡中的链接,php文件将打开并工作,所以我认为window.location.replace在crome扩展中不工作

有人知道我该如何解决这个问题吗

manifest.json

{
"browser_action": {
"default_icon": {
  "48": "images/startlapom-48.png",
  "96": "images/startlapom-96.png"
},
"browser_style": true,
"default_title": "Startlapom",
"default_popup": "managestartlapom.html"
},
"description": "Oldal hozzáadása, levétele a Startlapom oldalam(ra/ról)",
"manifest_version": 2,
"name": "Startlapom",
"permissions": ["tabs"],
"version": "1.0"
}
managestartapom.html

<!DOCTYPE html>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Startlapom</title>
    <link rel="stylesheet" href="managestartlapom.css"/>
    <link rel="stylesheet" href="https://startlapom.eu/startlapom.css" type="text/css" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
  </head>

  <body class="addon-body">
    <div id="startlapom-addon">
      <div class="panel">
        <a class="addon-link" href="#" id="startlapom-add">Oldal hozzáadása a Startlapomhoz</a><br />

        <div class="panel-section-separator"></div>

        <a class="addon-link" href="#" id="startlapom-remove">Oldal levétele a Startlapomról</a><br />
      </div>
    </div>
    <script src="managestartlapom.js"></script>
</body>

</html>

如果您在
managestartapom.js
文件中编写:

....
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  alert(window.location);
  ....... 
}

您将看到您的
窗口。位置
等于

chrome-extension://ext_id_here/managestartlapom.html#
我认为这不是您要替换的
窗口。位置。(它是弹出菜单的窗口)。

如果要替换活动选项卡页面的
window.location
,应在
chrome.tabs.query
回调中使用。

看起来chrome禁止将弹出窗口导航到非扩展URL。我认为您必须添加一个iframe(大小为整个弹出窗口的维度)并分配其src属性。为了澄清(我猜答案是正确的):您是在尝试更改活动选项卡的URL,还是在尝试替换弹出窗口本身的内容(那么您为什么要查询选项卡?),我想替换弹出窗口的内容,tabs query对我来说是必需的,因为我想将当前选项卡url和标题发布到php页面,您可以在managestartapom.js.Or,更简单的,
chrome.tabs.update
中看到,以更改url。是的,我知道,这是一个弹出窗口,但我想在这个弹出窗口中显示php页面,而不是在新选项卡中。
chrome-extension://ext_id_here/managestartlapom.html#