0

由于我无法访问我的网站的 PHP,因此我在下面尝试执行的操作,我正在使用此代码来解决它。它将搜索包含下面列出的两个的任何链接。一个来自 youtube 的 /watch?在它和另一个来自 youtube 的 URL 中只有 /v。它还在搜索任何嵌入的元素。问题是当我运行脚本时,由于错误,它会破坏所有其他代码。

未捕获的类型错误:无法调用未定义的方法“替换”

这是一个痛苦的屁股!所以我把它交给 FF,说变量 WT 没有明确定义。好吧,可能不是因为我在 if 语句的范围之外使用了它。我不确定如何确保链接是否存在运行代码。以及如果嵌入存在也运行代码。这些将在我的用户帖子中,并希望它们自动更改为与我的fancybox一起使用。

这是一个活生生的例子

它是从我的页面复制的标记,带有快速链接的 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'
        }
    });
});
4

1 回答 1

0

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

if(typeof wt !== undefined)

你也可以这样做:

if(wt !== "undefined")

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

于 2013-03-09T19:32:05.373 回答