gpt4 book ai didi

javascript - jsdom不处理网页内的脚本

转载 作者:太空狗 更新时间:2023-10-29 15:36:06 28 4
gpt4 key购买 nike

我是 nodejs 的新手。我想使用 jsdom 来解析一些可能包含脚本代码的网页。但是我得到错误说函数或变量没有定义。任何人都可以为此提供一些指导。

我的代码

var jsdom = require('jsdom');

jsdom.env({
html: 'http://10.200.0.10:8080/test/a.html',
scripts: [
'http://code.jquery.com/jquery-1.5.min.js'
],
done: function(errors, window) {
var $ = window.$;
window.onload();
console.log(window.a);
}
});

这里是html页面

<html>
<head>
<script>
var a = 0;
function loads(){
a=1000;
}
</script>
</head>
<body onload='loads()'>
</body>
</html>

得到下面的错误信息

dfddddfdf
undefined:1: ReferenceError: loads is not defined
loads()
^
ReferenceError: loads is not defined
at unknown source
at /root/node_modules/jsdom/node_modules/contextify/lib/contextify.js:10:24
at /root/node_modules/jsdom/lib/jsdom/level1/core.js:1024:50
at /root/testnode.js:18:12
at Array.0 (/root/node_modules/jsdom/lib/jsdom.js:199:39)
at EventEmitter._tickCallback (node.js:192:40)

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
ReferenceError: loads is not defined
at unknown source
at /root/node_modules/jsdom/node_modules/contextify/lib/contextify.js:10:24
at /root/node_modules/jsdom/lib/jsdom/level1/core.js:1024:50
at /root/testnode.js:18:12
at Array.0 (/root/node_modules/jsdom/lib/jsdom.js:199:39)
at EventEmitter._tickCallback (node.js:192:40)

它报告加载函数未定义,但实际上它已在网页中声明。

任何人都可以提供一些建议,或者只是简单地告诉我 jsdom 无法处理页面中嵌入的脚本。

最佳答案

这是您想要的代码:

var fs = require('fs');
var jsdom = require('jsdom');
var doc = jsdom.jsdom(fs.readFileSync("a.html"), null, {
features: {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script'],
MutationEvents : '2.0',
}
});

var window = doc.createWindow();
jsdom.jQueryify(window, "http://code.jquery.com/jquery-1.5.min.js", function() {
console.log(window.a);
console.log(window.$().jquery); //jquery version
});

您的代码将无法运行,因为 jsdom.env 方法不处理脚本。

关于javascript - jsdom不处理网页内的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10185903/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com