我目前正在使用Splash HTTP API作为无头浏览器来呈现请求。我将端点render.html与js_source一起使用 ,它允许在页面完成加载之后和页面呈现之前在页面上下文中评估自定义 Javascript 代码。
我需要对外部资源发出额外的请求,例如在页面加载后加载jQuery。
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "https://code.jquery.com/jquery-1.5.1.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
问题是这样做时,对象不会在页面上下文中变得可用。该脚本似乎确实添加到最终呈现的 HTML 源的 HEAD 元素中:
<script type="text/javascript" src="https://code.jquery.com/jquery-1.5.1.min.js"></script>
我尝试使用下面描述的两种方法设置回调,以确保在访问任何jQuery方法之前加载脚本。但是在这两种情况下都无法调用回调。
script.onreadystatechange = callback;
script.onload = callback;
在Chrome的控制台中运行上述脚本可以满足我的要求,并立即使 jQuery 资源在页面上下文中可用。