Javascript Chrome封装应用程序可以';无法打开相同的窗口错误
我正在开发简单的Chrome套装应用程序。我是chrome应用程序开发的新手。我运行应用程序时出错 错误消息是:无法打开指向“chrome”的相同窗口链接-extension://ckikacajammagdadocdkmcoecilafkgl/index.html"; 尝试target=“\u blank”。 索引HTML: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">
<!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);
};