无法在未定义的脚本问题上调用方法替换

cannot call method replace on undefined script issues

本文关键字:调用 方法 替换 问题 脚本 未定义      更新时间:2023-09-26

由于我无法访问PHP到我的网站,我正在使用此代码来绕过它。它将搜索任何包含下面列出的两个链接。YouTube上带/watch的那个?其中一个来自YouTube, url中只有/v。它还搜索所有嵌入的元素。问题是当我运行脚本时,它会因为错误而破坏所有其他代码。

未捕获的TypeError: Cannot call method 'replace' of undefined

这是一个痛苦的屁股!所以我把它转到FF,说变量WT没有明确的定义,尽管它是。可能不是,因为我在if语句的作用域之外使用了它。我不知道如何确保如果链接存在运行代码。如果嵌入存在,也运行代码。这些将在我的用户帖子,并希望他们自动更改与我的fanybox工作。

下面是一个实例

它是从我的页面上复制的标记,带有快速链接的CSS,所以不要介意错误的外观。

$(function() {
    //if link contains /watch?
    var t = $('.entry-content div div a[href*="youtube.com/watch?"]').attr('href');
    if(typeof t !== "undefined") {
        //do nothing don't run the script below
    } else {
        var d = $('.entry-content div div a[href*="youtube.com/watch?"]');
        var newsrc = t.replace('watch?','');
        var asrc = newsrc.replace('=','/');
        var g = asrc.replace('http://www.','http://img.');
        var s = g.replace('v','vi');
        d.attr('class','ez_video');
        d.attr('href', asrc).html('<img src="'+ s +'/0.jpg"/>');
    }
    //if link contains /v
    var wt = $('.entry-content div div a[href*="youtube.com/v"]').attr('href');
    if(typeof wt !== "undefined") {
        //do nothing don't run script below
    } else {
        var wd = $('.entry-content div div a[href*="youtube.com/v"]');
        var o = wt.replace('http://www.','http://img.');
        var v = o.replace('v','vi');
        wd.attr('class','ez_video');
        wd.attr('href', v).html('<img src="'+ v +'/0.jpg"/>');
    }
    //if embeded file
    var src = $('.entry-content').find('embed').attr('src');
    if (typeof src !== "undefined") {
        //do nothing again unless true run script below
    } else {
        var qload = src.replace('http://youtube.com/v/','');
        var y = src.replace('http://','http://img.');
        var imgsrc = y.replace('v','vi');
        $('embed').before('<a class="ez_video" id="'
            + qload +'" href="'+ src +'"><img src="'
            + imgsrc +'/0.jpg" tile="" alt=""/></a>');
        $('embed').remove();
    } 
    //Now make all work with the fancybox
    $('.ez_video').fancybox({
        'autoScale'     : false,
        'transitionIn'  : 'elastic',
        'transitionOut' : 'elastic',
        'width'         : 854,
        'height'        : 480,
        'type'          : 'swf',
        'swf'           : {
            'wmode'             : 'transparent',
            'allowfullscreen'   : 'true'
        }
    });
});

您正在将其与未定义的字符串进行比较,而您应该将其与实际保留字进行比较:

if(typeof wt !== undefined)

你也可以这样做:

if(wt !== "undefined")

顺便说一句,你正在做的是,如果它不是未定义的——什么都不做,否则——做点什么,这真的是你想要的吗?