2013-12-22 49 views
5

我正在嘗試開始編寫Chrome應用程序。由於某些原因,當我將其視爲Chrome應用程序時,JavaScript無法正常工作,但它可以很好地用作網頁。這是我的問題的最簡單的例子。JavaScript不能在Chrome應用程序中工作

打開index.html並使用chrome按預期工作 - 按下按鈕時,「hello world」字符串變爲「CLICK」。作爲Chrome應用程序運行時,按下按鈕時不會發生任何事情。

manifest.json的:

{ 
    "manifest_version": 2, 
    "name": "My first app", 
    "version": "0.0.1", 
    "app": { 
    "background": { 
     "scripts": ["main.js"] 
    } 
    } 
} 

main.js

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

的index.html:

<!DOCTYPE html> 

<html> 
<head> 
    <title>test</title> 
</head> 

<body> 
    <button type="button" onclick="myFunction()">click me</button> 
    <script> 
     function myFunction(){ 
      document.getElementById("testdiv").innerHTML = "CLICK" 
      } 
    </script> 
    <div id="testdiv">hello world</div> 
</body> 
</html> 

回答

7

好,Chrome Extensions Content-Security-Policy不允許內嵌腳本使用。

內嵌JavaScript不會被執行。此限制禁止 內聯塊和內聯事件處理程序(例如)。

嘗試在頁面中包含一個包含您的JavaScript腳本文件(<script src="script.js" type="text/javascript"></script">)而不是在頁面內使用您的JavaScript代碼。

希望有幫助。

+0

顯然,即使像onclick =「myFunction()」這樣的東西也算作內聯JS。所以,我需要從我的腳本中添加按鈕偵聽器。 – user1816847

+2

還有一個關於內聯腳本不允許打印到控制檯的錯誤消息。在開發Chrome應用程序時,控制檯應該成爲您最好的朋友。您還應該區分單個應用程序可能的多個控制檯:一個用於背景頁面,另一個用於每個打開的應用程序窗口。所有這些都會在'chrome:// extensions'的應用程序下的開發者模式下顯示出來。除非應用程序覆蓋菜單,否則也可以通過應用程序的任何窗口中的上下文菜單訪問它們。 –

相關問題