javascript - PhantomJS 获取属性

标签 javascript jquery phantomjs

如果我有这个:

<video data-autostart="false" data-src="http://example.com/1.mp4">

我收到以下错误:

TypeError: undefined is not an object

下面是我的 JavaScript 代码:

var page = require( 'webpage' ).create();
    var url = 'http://example.com/';
    page.open(url, function( status ) {
        if ( status === 'success' ) {
        page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', function() {
            var link = page.evaluate(function() {
                return $( 'video[data-autostart="false"]' ).attr( 'data-src' );
            });
            console.log( link );
            phantom.exit();
        });
    } else {
        console.log( 'FAIL' );
    }
});

我做错了什么以及如何解决它?

最佳答案

您几乎所做的一切都是正确的,但是当您在脚本中访问它时,您正在寻找的元素显然不存在。

因此错误,undefined is not an object。您尝试访问的元素未定义,不存在。

您可以在访问元素之前检查它是否存在:

var link = page.evaluate(function() {
    if($( 'video[data-autostart="false"]' ).length != 0)
    {
        return $( 'video[data-autostart="false"]' ).attr( 'data-src' );
    }
    else
    {
        return false;
    }
});

if (link === false) {
    console.log("Video not found!");
    phantom.exit(1); // Error exit code
}

完整的工作示例:

var url = "http://html5demos.com/video";
var page = require( 'webpage' ).create();

page.open(url, function( status ) {
    if ( status === 'success' ) {
        page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', function() {
            var link = page.evaluate(function() {
                if($( 'video' ).length != 0)
                {
                    return $( 'video' ).attr('preload');
                }

            });
            console.log( link );
            phantom.exit();
        });
    } else {
        console.log( 'FAIL' );
    }
});

打印

metadata

关于javascript - PhantomJS 获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44472300/

相关文章:

javascript - 幻影 Node 不传递 page.evaluate 函数的返回值

javascript - Uncaught ReferenceError : google is not defined

javascript - 将 Font awesome 图标动态添加到 SVG 文本元素

javascript - SpeechSynthesis 和 chrome.tts 有什么区别

javascript - 用 html 按钮替换字符串中的自定义标记

javascript - 如何停止/覆盖 Jquery TimeOut 函数?

javascript - 无法更改图标图像(React)

javascript - 在网站中重复背景

phantomjs - 使用PhantomJS提交表单后如何获取结果?

javascript - 有没有办法将对象传递给 casper.js 的 evaluate()?