【问题标题】:Can I inject JavaScript object into WebBrowser?我可以将 JavaScript 对象注入 WebBrowser 吗?
【发布时间】:2013-10-23 19:32:29
【问题描述】:

我需要将一个带有类的 js 文件注入到 WP7 应用程序的 WebBrowser 元素中,但我得到一个未知的运行时错误:

 webbrowser.InvokeScript("eval", "function Player() {  this.play = function(e) { window.external.notify(e); }}

这可能吗?

【问题讨论】:

  • 描述您的错误。您可以在 IDE 中找到它。我曾经遇到过 js 注入错误,因为我试图在 webbrowser 准备好之前注入它。请务必将您的代码放在网络浏览器的 documentReady() 回调中
  • Windows Phone WebBrowser 中没有 documentReady() 回调,但是当我将此代码放入导航回调时,错误似乎消失了。现在没有错误。但它不起作用......
  • 我不得不承认我没有尝试过 WP。然而事情与 c# winform 类似。并在成功加载文档后调用 Navigated()。
  • 阿拉马苏德,它不是复制品。这个问题比你指出的更具体。

标签: windows-phone-7 windows-phone-8 browser


【解决方案1】:

我自己也遇到过。

问题是您没有将参数作为字符串发送。 eval 将字符串作为参数,如果您使用当前参数调用此脚本,它将转换为:

eval(function Player() {  this.play = function(e) { window.external.notify(e); }})

当你真正想做的是:

eval("function Player() {  this.play = function(e) { window.external.notify(e); }}")

所以正确的,试试:

webbrowser.InvokeScript("eval", "\"function Player() {  this.play = function(e) { window.external.notify(e); }}\"");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2012-04-16
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多