我已经在Swift中编写了一组Web scraper-ish函数,我正在使用JavaScriptCore库来......执行一些JavaScript。我从网上抓取了一个文件,但它只有一些我感兴趣的功能。但是,该文件的某些部分包含window
或window.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。但是,必须有更好的方法......对吗?
答案 0 :(得分:0)
我最终做的是完全忽略对window
的这些引用 - 我从JS文件中获取的函数并没有引用窗口或其属性。我做了一些正则表达式魔法(magix?)来提取我想要的函数的定义,并为这些函数创建了一个新的字符串。然后,我将该字符串提供给JSContext.evaluateScript
。我希望这有助于某人!