我对复杂的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
)并将参数作为数组。正是您需要包装它。