图片显示了Chrome浏览器中右键单击的查看源页面的打印屏幕。通过在源的完整上下文中搜索,我只找到了方法 freshPage 的一个引用。我没有找到定义。所以我很困惑浏览器如何执行脚本,因为 freshPage 方法似乎不喜欢内置的Javascript函数。在页面加载期间我没有看到任何其他脚本。 我如何模仿动作以获得函数的返回值?
我意识到我错过了从服务器响应的more.js文件,并附有评论和回复。我在文件中找到了定义。
答案 0 :(得分:1)
只有两种真正的可能性:
freshPage
功能由页面上的脚本提供。这可能是<script src="..."></script>
,它指的是单独的资源(似乎很可能),或内联<script>/*code here*/</script>
,或
该通话会抛出ReferenceError
。
在这种情况下,它是#1:页面通过此脚本标记加载more.js
:<script type="text/javascript" src="http://app.vmall.com/js/all/more.js?version=2.9.5.20150418"></script>
声明该函数。
如何模仿获取函数返回值的操作?
只是......打电话给它。这可以来自您在页面中注入的脚本,书签或控制台。
这不是这种情况,但请注意,完全可以在脚本执行后删除它。例如:
<script id="foo">
function doSomething() {
// ...
}
setTimeout(function() {
var script = document.getElementById("foo");
script.parentNode.removeChild(script);
}, 0);
</script>
一旦加载了包含该页面的页面,就会在全局范围内定义doSomething
函数,并且不再在页面上定义script
标记。 (“查看源代码”应该显示它,但不会显示屏幕截图中显示的实时DOM检查器。)
但同样,您链接的页面不会这样做。在“视图源”和DOM检查器中都可以很容易地找到脚本标记。