示例:
<script type="text/javascript">
function test() {
console.log("Hello world");
}
</script>
我如何致电test()
?
编辑:我没有正确解释。
我正在使用node.js的请求模块来加载包含javascript函数的外部html文件:
request.get(options, function (error, response, body) {
if (error && response.statusCode !== 200) {
}
else {
jsdom.env({
html: body,
scripts: ["../jquery-1.6.4.min.js"]
}, function (err, window) {
var $ = window.jQuery;
我只是在寻找在'body'中调用函数的语法。
答案 0 :(得分:3)
只需像调用页面上的任何其他函数一样调用它,jQuery是一个框架,运行JS函数时不需要它。
答案 1 :(得分:3)
所以这里的问题是默认情况下,jsdom.env
在处理标记时不会执行找到的javascript。
您需要启用以下功能:
jsdom.env({
// ...
features : {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script']
}
});
FetchExternalResources
控制jsdom是否应该甚至打扰通过网络/磁盘来收集资源的字节
ProcessExternalResources
控制是否执行或获取脚本
注意选择这些名称以包含将来添加的其他资源类型(读取:图像,CSS等)。这里的想法是提供理智的默认值,但有许多可转动的旋钮会影响jsdom的行为。
答案 2 :(得分:1)
test();
但这不是jquery,它只是简单的旧javascript。
答案 3 :(得分:1)
试试这个:
...
function (err, window) {
var $ = window.jQuery;
window.test();
...
您也可以尝试:
<script type="text/javascript" id="myscript">
function test() {
console.log("Hello world");
}
</script>
然后:
function (err, window) {
var $ = window.jQuery;
(1,window.eval)( $("#myscript").html() );
window.test();