Windows Phone 8 应用程序,WebBrowser 控件。我通过 NavigateToString
加载一 block HTML (设置 IsScriptEnabled=true
后)。一段时间后(加载很久之后),我使用 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。某些确保不会调用可疑脚本的系统代码可能会造成妨碍。
最佳答案
找到了一种解决方法:在启动时将外部脚本文件加载到字符串中,加载 HTML 后(LoadCompleted
触发),使用 JavaScript eval
将其提供给文档.
关于webbrowser-control - WP8 WebBrowser : inline script works, 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13368921/