外部脚本在 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 ActionContent. 这将确保 .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 到您的脚本文件。