Javascript Chrome封装应用程序可以';无法打开相同的窗口错误

Javascript Chrome封装应用程序可以';无法打开相同的窗口错误,javascript,google-chrome-extension,google-chrome-devtools,google-chrome-app,Javascript,Google Chrome Extension,Google Chrome Devtools,Google Chrome App,我正在开发简单的Chrome套装应用程序。我是chrome应用程序开发的新手。我运行应用程序时出错 错误消息是:无法打开指向“chrome”的相同窗口链接-extension://ckikacajammagdadocdkmcoecilafkgl/index.html"; 尝试target=“\u blank”。 索引HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8">

我正在开发简单的Chrome套装应用程序。我是chrome应用程序开发的新手。我运行应用程序时出错

错误消息是:无法打开指向“chrome”的相同窗口链接-extension://ckikacajammagdadocdkmcoecilafkgl/index.html"; 尝试target=“\u 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>
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});
});

怎么了?

chrome.app.window.create需要清单中的“app.window”权限

chrome.storage.*.set
chrome.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=''u blank',并让它在用户的默认浏览器(不一定是Chrome!)中打开一个新的选项卡/窗口,或者向链接添加一个onclick处理程序并在其中执行一些更高级的操作

我根据你的来源重新创建了你的应用程序,它是开箱即用的,除了TXTEST在没有上述更改的情况下说“未定义”。但任何地方都没有报告任何错误。但是,我没有使用jQuery。相反,我在custom.js中使用了以下命令来启动序列:

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

如果您可以验证是否使用$(document)获取错误。准备好了,但没有使用onload获取错误,请告诉我们。

我们唯一能确定您做错了的是,您没有包含导致错误的代码。控制台错误消息是否包含文件和行号?index.html的内容是什么?manifest.json的内容是什么?哪个文件引用这个“自定义js文件”?嗨,谢谢你的回答。我编辑了我的问题并添加了我的所有简单应用程序的文件。那么有什么不对呢?它在customjs文件document.getElementById(“txtTest”).value=channelss.channelLine上给出了一个错误。一个可能的问题是,给出错误的行将在将“result”赋值给“channelss”的行之前执行。(至少,有时会这样;因为它是异步的,所以你不能确定。)你打算这样做吗?为什么要将“result”的赋值和用法分开?我用代码更改了custom.js,但没有更改$(document).ready块。你是一生的救星。非常感谢!在某种程度上,你是对的:chrome.app.window.*API确实需要“app.window”权限。但是,该权限目前对所有Chrome打包的应用程序都是隐含的,也就是说,它对所有应用程序都是隐式注入的,并且您不必在清单中明确指定它(尽管您可以,但这不会产生错误)。这方面的公开文档有点落后,但很快就会得到解决。
onload = function () {
    save(load);
};