外部脚本在 Windows Phone App 8.1 中不起作用
External scripts not working in Windows Phone App 8.1
我已经在我的项目中添加了一个 WebView。如果我导航到包含外部 javascript 文件的 html 文件,它们将不起作用。如果我将 javascript 代码硬编码到 html 文件中,它会正常工作。
这是html部分:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="testjs.js"></script>
</head>
<body>
<div id="abcd"></div>
<br/>
hello! this is a simple html block.
</body>
</html>
这是javascript部分:
document.getElementById("abcd").innerHTML = "New text!";
当我打开 webview 时它显示
hello! this is a simple html block.
,
但如果 javascript 代码有效,它将显示
New Test!
hello! this is a simple html block.
文件夹结构如下:
src="testjs.js" 是正确的。该问题与路径无关。
[更新 1]
您的代码应该像我们通常为 Web 开发所做的那样工作。但似乎我们需要确保脚本中使用的 html 元素已经初始化,所以我们必须将 放在 body 元素的末尾。请尝试以下 html 代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="abcd">a</div>
<br />
hello! this is a simple html block.
<script type="text/javascript" src="testjs.js"></script>
</body>
</html>
[更新 2]
同时检查您是否已将 testjs.js
的 构建操作 更改为内容。转到 Solution Explorer -> 右键单击 testjs.js
-> Properties -> 更改 Build Action 到 Content. 这将确保 .js
文件将作为您应用程序的一部分进行部署。
WebView msdn 页面建议,出于安全原因,您不能 link 本地内容,除了:
However, you can still link to HTML content in the app package using the ms-appx-web scheme, and to web content using the http and https URI schemes.
所以您应该能够 link 使用 ms-appx-web:///testjs.js
url 到您的脚本文件。
我已经在我的项目中添加了一个 WebView。如果我导航到包含外部 javascript 文件的 html 文件,它们将不起作用。如果我将 javascript 代码硬编码到 html 文件中,它会正常工作。
这是html部分:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="testjs.js"></script>
</head>
<body>
<div id="abcd"></div>
<br/>
hello! this is a simple html block.
</body>
</html>
这是javascript部分:
document.getElementById("abcd").innerHTML = "New text!";
当我打开 webview 时它显示
hello! this is a simple html block.
,
但如果 javascript 代码有效,它将显示
New Test!
hello! this is a simple html block.
文件夹结构如下:
src="testjs.js" 是正确的。该问题与路径无关。
[更新 1]
您的代码应该像我们通常为 Web 开发所做的那样工作。但似乎我们需要确保脚本中使用的 html 元素已经初始化,所以我们必须将 放在 body 元素的末尾。请尝试以下 html 代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="abcd">a</div>
<br />
hello! this is a simple html block.
<script type="text/javascript" src="testjs.js"></script>
</body>
</html>
[更新 2]
同时检查您是否已将 testjs.js
的 构建操作 更改为内容。转到 Solution Explorer -> 右键单击 testjs.js
-> Properties -> 更改 Build Action 到 Content. 这将确保 .js
文件将作为您应用程序的一部分进行部署。
WebView msdn 页面建议,出于安全原因,您不能 link 本地内容,除了:
However, you can still link to HTML content in the app package using the ms-appx-web scheme, and to web content using the http and https URI schemes.
所以您应该能够 link 使用 ms-appx-web:///testjs.js
url 到您的脚本文件。