与indexOf()的多个字符串匹配

Bla*_*ner 20 html javascript jquery html5

我非常确定我的语法错误,因为脚本只有在字符串匹配"Video"时才有效,如果字符串有"word"音频"它被忽略.此外,因为href标签的值为"#",重定向为" ../../../index.html"不起作用.

JS

var ua = navigator.userAgent.toLowerCase();
var isIE8 = /MSIE 8.0/i.test(ua);
if (isIE8) {
    $('a').click(function () {
        var srcTag = $(this).find('img').attr('src');
        if (srcTag.indexOf('Video' || 'Audio') > -1) {
            if (confirm('Download Safari? \n\n http://apple.com/safari/download/')) {
            window.location = 'http://apple.com/safari/download/';
            } else { window.location = '../../../index.html';}
        } else {
            alert('no match');
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

HTML

<a href="#"><img src="Video/000_Movies/assets/005_CCC_Jesus_Story_80x60.jpg" />test1</a> 
<a href="#"><img src="Audio/000_Movies/assets/006_GSP_Gods_Story_80x60.jpg" />test2</a> 
<a href="#"><img src="Media/000_Movies/assets/002_God_Man_80x60.jpg" />test3</a>
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 79

把它变成正则表达式要短得多.

if ( srcTag.match( /(video|audio)/ ) ) {
  /* Found */
} else {
  /* Not Found */
}
Run Code Online (Sandbox Code Playgroud)

另外,请不要做你想做的事情.要求用户在使用Internet Explorer 8时下载Safari对互联网以及该用户造成损害.

至于将域重定向到另一个位置,您应该使用.preventDefault()以防止浏览器跟踪链接:

$("a.videoDownload").on("click", function(e){
  e.preventDefault();
  if ( this.getElementsByTagName("img")[0].src.match( /(video|audo)/ ) ) {
    window.location = confirm( 'Download Safari?' )
      ? "http://apple.com/safari/download" 
      : "../../../index.html" ;
  } else {
    /* No match */
  }
});
Run Code Online (Sandbox Code Playgroud)

再次,请不要真正做到这一点.没有人想成为那个人,当你告诉用户下载另一个浏览器时,你就是那个人.

  • /(视频|音频)/ .test(srcTag)看起来对我好. (4认同)

Dav*_*d M 8

'Video' || 'Audio'是一个逻辑OR.非空字符串在JavaScript中隐式地是一个真值,因此不会评估短路的OR,这会折叠到正好'Video'.这就是您看到结果的原因.

其他人指出了正确的解决方向.