Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在新选项卡中从“选择/选项”下拉列表中打开外部链接_Javascript_Html_Drop Down Menu_External Links - Fatal编程技术网

Javascript 在新选项卡中从“选择/选项”下拉列表中打开外部链接

Javascript 在新选项卡中从“选择/选项”下拉列表中打开外部链接,javascript,html,drop-down-menu,external-links,Javascript,Html,Drop Down Menu,External Links,我有一个选择选项下拉列表,包含内部和外部链接。我希望外部链接(并且只有它们)在新选项卡中打开。这就是我所拥有的 <select id="my-dropdown"> <option value="">A list of internal and external links</option> <option value="http://www.someurl.com">External Link</option>

我有一个选择选项下拉列表,包含内部和外部链接。我希望外部链接(并且只有它们)在新选项卡中打开。这就是我所拥有的

<select id="my-dropdown">
    <option value="">A list of internal and external links</option>
    <option value="http://www.someurl.com">External Link</option>
    <option value="/internal/page">Internal links</option>
</select>

内部和外部链接的列表
外部链接
内部链接
JS打开链接

<script>
    document.getElementById("my-dropdown").onchange = function() {
        if (this.selectedIndex!==0) {
            window.location.href = this.value;
        }        
    };
</script>

document.getElementById(“我的下拉列表”).onchange=function(){
如果(此.selectedIndex!==0){
window.location.href=this.value;
}        
};
编辑:将JS更改为这样做:

<script>
    document.getElementById("my-dropdown").onchange = function() {

        var externalLinkCheck = this.options[this.selectedIndex].value;

        if (this.selectedIndex!==0 && externalLinkCheck.substring(0,4) == "http") {
            window.open(this.value, '_blank');
        } else {
            window.location.href = this.value;
        }        
    };
</script>

document.getElementById(“我的下拉列表”).onchange=function(){
var externalLinkCheck=this.options[this.selectedIndex].value;
if(this.selectedIndex!==0&&externalLinkCheck.substring(0,4)==“http”){
window.open(this.value,'u blank');
}否则{
window.location.href=this.value;
}        
};
下面的答案也很好!谢谢

您可以这样做:

<script>
   document.getElementById("my-dropdown").onchange = function() {
      if(this.selectedIndex!==0) {
          var win=window.open(this.value, '_blank');
          win.focus();
      }        
   };
</script>

document.getElementById(“我的下拉列表”).onchange=function(){
如果(此.selectedIndex!==0){
var win=window.open(this.value,“_blank”);
win.focus();
}        
};

您可以添加另一个条件来查找外部链接的
http://
前缀

<script>
    document.getElementById("my-dropdown").onchange = function() {
        if (this.selectedIndex!==0) {
            if (this.value.indexOf('http://') == 0) {
                window.open(this.value);
            }
            else {
                window.location.href = this.value;
            }
        }
    };
</script>

document.getElementById(“我的下拉列表”).onchange=function(){
如果(此.selectedIndex!==0){
if(this.value.indexOf('http://')==0){
window.open(此.value);
}
否则{
window.location.href=this.value;
}
}
};

然而,大多数浏览器都有一个弹出窗口拦截器,可以关闭通过编程打开的新窗口。通常只允许处理onclick事件的代码绕过弹出窗口阻止程序。

这是否检查这是外部链接还是内部链接?这是外部链接。!!请阅读上面的问题。内部链接应在当前选项卡中打开,外部链接应在新选项卡中打开。我不认为你的代码检查?还是我错了?