我正在开发简单的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});
});
有什么问题?
答案 0 :(得分:1)
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 ='_ blank',并让它在用户的默认浏览器中打开一个新的选项卡/窗口(不一定是Chrome!),或者在链接中添加一个onclick处理程序并在那里做更好的事情。
我根据您的来源重新创建了您的应用程序,并且它开箱即用,但txtTest在没有上述更改的情况下表示“未定义”。但是没有任何错误报告(任何错误)。但是,我没有使用jQuery。相反,我在custom.js中使用以下内容来启动序列:
onload = function () {
save(load);
};
如果您可以使用$(文件).ready验证您是否收到错误,并且未通过onload获取错误,请告诉我们。
答案 1 :(得分:0)
chrome.app.window.create需要清单
中的“app.window”权限