【问题标题】:Communicating between two webviews with Javascript使用 Javascript 在两个 webview 之间进行通信
【发布时间】:2010-03-10 14:06:52
【问题描述】:

在具有多个 webview 的应用程序中,有没有办法让两个单独的 webview 中的 JavaScript 直接相互通信?我真的很想在一个 webview 中使用 JavaScript 来控制另一个 webview 的内容,但我敢打赌,每个环境都是完全隔离的,并且必须对通信进行序列化并通过 webview 控制器发送。

【问题讨论】:

    标签: javascript iphone webview


    【解决方案1】:

    在同一个网页视图中使用<frameset>、<iframe>等在两个页面之间进行通信。

    否则,无法看到环境之外的内容(尤其是对于 iPhoneOS,因为整个 WebKit 框架是一个私有 API。)

    【讨论】:

    • 射击。这太糟糕了。我的问题的核心是我需要多个 web 视图,每个都可以独立滚动。现在,我正在使用一个宽 webview,它具有由滚动控制器管理的左右滚动,以在数据“页面”和由 webview 控制的上下滚动之间移动。左右工作顺利,但上下非常非常难以控制。我正在考虑序列化 HTML 片段并通过 webview 控制器将它们传递给需要它们的 webview,但是绑定事件将很难管理。
    【解决方案2】:

    我正在寻找做同样的事情,并在研究问题时遇到了这个线程。还没有机会对其进行建模,但看起来至少在理论上是可行的,首先使用 JavaScript 与 Objective-C 包装器进行通信,然后通过 JavaScript 调用将该数据发送到第二个 WebView。可以在此处找到有关这两个(独立)步骤的信息:http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/

    【讨论】:

    • 使用 Objective C,我们最终只使用了一个 webview。但是使用应用程序作为代理确实有效。我最终在 Android 中执行此操作(创建一个 MessageCenter 对象,该对象在各种 webview 之间引导消息。在 iOS 中,如果您通过更改 URL 与应用程序层进行通信,您需要非常小心的一件事是间隔消息。如果您连续两次快速设置 URL,通常只会拾取最后一个 URL。最好用 JavaScript 编写一个队列,并让应用程序在准备好接收新消息时推进队列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多