Chrome打包应用程序无法打开同一窗口错误

时间:2013-09-15 11:29:08

标签: javascript google-chrome-extension google-chrome-devtools google-chrome-app

我正在开发简单的Chrome打包应用。我是Chrome应用程序开发的新手。当我运行应用程序时出现错误。

错误消息是:无法打开同一窗口链接到“chrome-extension://ckikacajammagdadocdkmcoecilafkgl/index.html”;尝试target =“_ blank”。

索引HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My first Chrome App</title>
    <script src="jquery-1.10.2.min.js"></script>
    <script src="custom.js"></script>
</head>
<body>
    <button id="btnTest" value="Test" style="width: 200px; height: 40px">TEST</button>
    <br />
    <input type="text" id="txtTest" />
    <div id="divMovies" style="width: 100%;">
        <br />
        Url : 
    </div>
</body>
</html>

custom.js:

$(document).ready(function () {
    save(load);
});

function save(callback) {
    var channel = "Test local storage item test";
    chrome.storage.local.set({ 'channel': channel });
    callback();
}
function load() {
    var channelss = "";
    chrome.storage.local.get('channel', function (result) {
        channelss = result;
    });
    document.getElementById("txtTest").value = channelss.channel;
}

的manifest.json:

{
  "manifest_version": 2,
  "name": "Dizi Takip App",  
  "version": "1",
  "app": {
    "background": {
      "scripts": ["main.js"]
    }
  },
  "icons": { "128": "icon.png" },
  "offline_enabled": true,
  "permissions": [
    "storage"
  ]
}

main.js:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('index.html', {width: 500, height: 309});
});

有什么问题?

2 个答案:

答案 0 :(得分:1)

chrome.storage.*.setchrome.storage.*.get都是异步API(如sowbug所述)。因此,您需要将custom.js更改为:

function save(callback) {
    var channel = "Test local storage item test";
    chrome.storage.local.set({ 'channel': channel }, function() {
        callback();
    });
}

function load() {
    chrome.storage.local.get('channel', function (result) {
        document.getElementById("txtTest").value = result.channel;
    });
}

但是,您提到的错误对此应用程序没有任何意义,并且与custom.js中的问题无关。如果您的应用在其HTML代码中包含没有target ='_ blank'属性的链接,并且用户点击了该链接,则通常会看到此错误。应用程序没有内置的窗口导航概念,因此禁止使用此类链接。您可以为链接指定target ='_ blank',并让它在用户的默认浏览器中打开一个新的选项卡/窗口(不一定是Chrome!),或者在链接中添加一个onclick处理程序并在那里做更好的事情。

我根据您的来源重新创建了您的应用程序,并且它开箱即用,但txtTest在没有上述更改的情况下表示“未定义”。但是没有任何错误报告(任何错误)。但是,我没有使用jQuery。相反,我在custom.js中使用以下内容来启动序列:

onload = function () {
    save(load);
};

如果您可以使用$(文件).ready验证您是否收到错误,并且未通过onload获取错误,请告诉我们。

答案 1 :(得分:0)

chrome.app.window.create需要清单

中的“app.window”权限