0

私は自分のサイトへのPHPにアクセスできないため、以下で実行しようとしています。このコードを使用して回避しています。以下にリストされている2つを含むリンクを検索します。/ watchでyoutubeから1つ?それと他のYouTubeからのURLに/vだけが含まれています。また、埋め込まれた要素を検索しています。問題は、スクリプトを実行すると、エラーのために他のすべてのコードが壊れることです。

Uncaught TypeError:未定義のメソッド'replace'を呼び出すことができません

お尻の痛みです!それで私はそれを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 に答える