Swift JavaScriptCore 不能处理大文件?
Posted
技术标签:
【中文标题】Swift JavaScriptCore 不能处理大文件?【英文标题】:Swift JavaScriptCore not working with large files? 【发布时间】:2018-01-28 14:14:44 【问题描述】:https://github.com/gg2001/monero/blob/master/monero/NewWallet.js
我有一个相当大的 6000 行的 js 文件,javascript 核心似乎无法检索变量值,而在任何 Web 浏览器中运行相同的文件对我来说都很好。当我尝试检索变量的值时,它显示为未定义,但是当我在浏览器中使用 js 控制台时,它显示得很好。我推测这是由于文件的大小,因为当我放
var helloWorld = "Hello World";
在js文件的前面这个swift代码可以检索它
func helloWorld()
if let variableHelloWorld = self.jsContext.objectForKeyedSubscript("helloWorld")
print(variableHelloWorld.toString())
但是当我把它放在最后时它不能。
【问题讨论】:
【参考方案1】:通常这表示解析错误。尝试在调用objectForKeyedSubscript()
之前向self.jsContext
添加错误处理程序,看看它是否输出任何有见地的信息。
self.jsContext.exceptionHandler = context, exception in
print("JS Error: \(exception?.description ?? "unknown error")")
虽然您的 JS 代码可能在浏览器控制台中有效,但 ios Safari 不支持与较新浏览器一样多的 Javascript 功能。
我确实在您的 JS 源代码中看到了一行以分号开头的行(紧随其后的是 (function
)。我想知道解析器是否会抱怨没有声明的空行..?不过也许什么都没有。
【讨论】:
通过实现 WKWebView 并避免使用 JavaScriptCore 找到了一个解决方案,所以我从来没有尝试过这个。希望这可以解决其他人的问题。以上是关于Swift JavaScriptCore 不能处理大文件?的主要内容,如果未能解决你的问题,请参考以下文章
JavaScriptCore evaluateScript 不能处理对象?
无法使用 JavaScriptCore 中的 Swift 类
Swift Playgrounds 中的 JavaScriptCore