【发布时间】:2012-11-13 21:15:06
【问题描述】:
Windows Phone 8 应用,WebBrowser 控件。我通过NavigateToString(在设置IsScriptEnabled=true 之后)加载了一大段HTML。一段时间后(加载很久之后),我使用 InvokeScript 在页面上调用了一些 JavaScript。
当我调用在 <script> 元素内内联定义的 JavaScript 函数时,它按预期工作。当我调用一个在外部 JS 文件中定义的文件时,它不会,并且会引发来自 HRESULT 0x80020006(“找不到名称”)的异常。
外部脚本文件是从我的应用程序包中加载的。在 HTML 字符串中,有一个 <base> 元素,其中包含指向包文件夹的 file:// URL(通过 Package::Current->InstalledLocation 检索),<script> 元素仅包含文件名。该文件夹中还有样式和图像 - 它们可以正常加载。
HTML 没有 DOCTYPE 和 xmlns - 我知道这些东西有时会导致 JavaScript 失效。
外部脚本文件是有效的 - 它直接来自 Android,它在相应的 WebView 控件上工作。无论如何,我试图调用的函数都是空的,为了安全起见,JavaScript 语法。
这在理论上可能是某种跨域脚本问题。从技术上讲,脚本来自file:// URL,而页面本身根本不来自任何 URL。一些确保不会调用可疑脚本的系统代码可能会受到阻碍。
【问题讨论】:
标签: webbrowser-control windows-phone windows-phone-8