我对复杂的JavaScript并不是特别熟悉。我试图从中等URL中提取一些信息,并且我注意到每个页面都有以JSON格式存储的整个帖子内容。页面上的内容如下所示:

<script>// <![CDATA[
window["obvInit"]({"value":{"id":"e389ba1d8f57","versionId":"1b74...


我如何轻松地从页面中提取此json? json之前window [“ obvInit”]的序言是什么意思?我可以在Chrome控制台中调用函数obvInit并以某种方式获取json输出吗?

对不起基本问题!

谢谢

最佳答案

这就是所谓的函数。在全局窗口名称空间中,它可能(但并非必须)像function obvInit(...){...}那样声明。现在解决您的问题:您可以通过覆盖如下函数轻松提取传递的对象:

var _oldObvInit = window.obvInit;
window.obvInit = function(){
        console.log(arguments[0]); //use this to extract the object
        console.log(JSON.stringify(arguments[0])); //use this to extract JSON
        return _oldObvInit.apply(window, arguments);
}


将其放在您在此处发布的脚本标签之前以及函数obvInit的声明之后。

有点上下文:每个javascript函数中都有一个隐式变量arguments,它将变量的参数存储为数组。然后apply调用一个函数,设置上下文(this)并将参数作为数组。正是您需要包装它。

10-06 04:46