【问题标题】:JavaScript/Swift + JavaScriptCore - Possible to ignore undefined variables?JavaScript/Swift + JavaScriptCore - 可以忽略未定义的变量吗?
【发布时间】:2017-05-24 04:58:10
【问题描述】:

我有一组网络爬虫式的函数,我用 Swift 编写,我正在使用 JavaScriptCore 库来......好吧,执行一些 JavaScript。我从网上抓取了一个文件,但它只有几个我感兴趣的功能。但是,文件的某些部分包含windowwindow.currentScriptnew window.WeakMap 之类的内容...这些不幸的是,JavaScriptCore 中没有定义东西。

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

与此同时,我正在尝试做的事情是猴子补丁所有错误的事情,就像这样:

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

并将其添加到 JS 中。不过,一定有更好的办法……对吧?

【问题讨论】:

  • 我有使用正则表达式的想法——也许是这样的? (new|var|)\s*window.*?(?=\s|;|\)|]|&&|\|\||:|}) ...它并不完美,但它可以工作(几乎而且通常)

标签: javascript ios swift javascriptcore


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    • 2020-05-25
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多