JavaScript / Swift + JavaScriptCore - 可以忽略未定义的变量吗?

时间:2017-05-24 04:58:10

标签: javascript ios swift javascriptcore

我已经在Swift中编写了一组Web scraper-ish函数,我正在使用JavaScriptCore库来......执行一些JavaScript。我从网上抓取了一个文件,但它只有一些我感兴趣的功能。但是,该文件的某些部分包含windowwindow.currentScript等内容,或new window.WeakMap ...遗憾的是,这些内容未在JavaScriptCore中定义。

这是我遇到的错误之一,例如: TypeError: undefined is not an object (evaluating 'window.document.currentScript.src.indexOf')

我在此期间尝试做的事情就是monkeypatch所有错误的事情,比如:

window={};window.document.currentScript.src={};window.document.currentScript.src.indexOf={}

并将此前置于JS。但是,必须有更好的方法......对吗?

1 个答案:

答案 0 :(得分:0)

我最终做的是完全忽略对window的这些引用 - 我从JS文件中获取的函数并没有引用窗口或其属性。我做了一些正则表达式魔法(magix?)来提取我想要的函数的定义,并为这些函数创建了一个新的字符串。然后,我将该字符串提供给JSContext.evaluateScript。我希望这有助于某人!