JavaScriptCore - 在 iOS 中访问 DOMParser

Posted

技术标签:

【中文标题】JavaScriptCore - 在 iOS 中访问 DOMParser【英文标题】:JavaScriptCore - Accessing DOMParser in iOS 【发布时间】:2014-05-13 10:55:59 【问题描述】:

我正在为 iPhone 构建一个应用程序,它有望使用添加到 ios 7 的新 javascriptCore 框架。我正在使用 javascript,因为我需要向我的项目添加一个 javascript 库 citeproc-js。我可以通过将它加载到UIWebView 中来启动并运行这个库,但我需要从后台线程中使用它,所以我尝试将它加载到JSContext 中。

我遇到的问题是库依赖于使用webkitDOMParser,但是当框架加载到JSContext 时解析器永远不会加载。

是否可以从JSContext 访问DOMParser?如果没有,还有其他选择吗?

谢谢!

【问题讨论】:

【参考方案1】:

JSContext 提供的 JavaScript API 实际上是该语言的核心 API - 它甚至缺少诸如 console.log 和 setTimeout 之类的东西,因为它们是由浏览器提供的。因为 DOMParser 是在 JavaScriptCore 之外定义的另一个 API,所以它不应该在 JSContext 中访问。

您可以做的是通过 JSExport 机制向 JSContext 公开像 TBXML 这样的原生 XML 解析器,然后使用它。

【讨论】:

感谢您的信息和建议。【参考方案2】:

如果它为遇到这个问题的读者简化了事情,CSL 的citeproc-js 实现现在包含一个用纯 JavaScript 编写的基于字符串的 XML 解析器。除了the essentials 之外,不需要任何特殊设置:如果为处理器提供了一个有效的 XML 字符串,它将使用它。

(以 citeproc-js 的作者和维护者身份发帖)

【讨论】:

以上是关于JavaScriptCore - 在 iOS 中访问 DOMParser的主要内容,如果未能解决你的问题,请参考以下文章

iOS9 上的 JavaScriptCore 崩溃

iOS js oc相互调用(JavaScriptCore)

转载 iOS js oc相互调用(JavaScriptCore)

iOS上的javascriptcore框架可以接入网络吗?

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

UIWebView iOS 5:WebKit/JavaScriptCore 崩溃