webbrowser-control - WP8 WebBrowser : inline script works, 未加载

标签 webbrowser-control windows-phone windows-phone-8

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/

相关文章:

c# - 订阅长期对象事件时,我附加的 DependencyProperty 是否泄漏?

c# - Windows 手机 8 : how to include image in sample photos?

c# - 调试时 Visual Studio 2013 停止显示变量值

windows-phone-7 - Windows Phone 7 - 购买开发者设备

sqlite - Windows Store 应用程序将 SQLite 文件放在 LocalState 文件夹中

android - 应用程序签名过程如何适用于在网站上创建的应用程序

c# - 单声道,跨OS(Windows/Linux)Web浏览器 View

javascript - 如何在 Windows Phone 8 的 WebBrowser 控件中制作书籍翻页动画效果

c# - Winform webbrowser 自定义字体不显示

c# - Web 浏览器控件 : "Specified cast is not valid."