使用锚标记中的javascript window.open(elementName.elementValue)在新选项卡中打开页面

时间:2012-04-15 22:10:27

标签: javascript href window.open

我在过去的几天里检查了大量的例子,但仍然无法找到解决我的困境的答案。为了让我先解释一下我的困境,我会向你展示一些我有所作为的例子,然后解释一下我是如何工作的(但似乎无法实现)。

这有效:

<form>
<select name="url">
    <option selected="selected" value=""> Choose Donation Amount </option>
    <option value="http://www.url1.com">URL#1</option>
    <option value="http://www.url2.com">URL#2</option>
    <option value="http://www.url3.com">URL#3</option>
    <option value="http://www.url4.com">URL#4</option>
    <option value="http://www.url5.com">URL#5</option>
    <option value="http://www.url6.com">URL#6</option>
</select>
<input type="submit" value="Submit" onclick="if (url.value) window.open(url.value);" />
</form>

但我宁愿做的是捕获选项并使用锚标记打开URL(而不是输入[type“submit”]),类似这样(在结束表单标记之前替换输入标记):

<a href="javascript:void(if (url.value) window.open(url.value));" target="_blank">Submit</a>

以上行不起作用,我无法弄清楚如何正确形成它。帮助

我知道这似乎不合逻辑,特别是因为我已经使用提交按钮工作了,但是我也不能解释为什么我不想使用输入或按钮类型=“提交” ,或PHP。请,它确实需要在锚标记中内联javascript。谢谢: - )

5 个答案:

答案 0 :(得分:7)

添加您的表单name属性,如:

<form name="form">

......然后尝试一下:

<a href="" onclick="window.open( form.url.value, 'windowName' ); return false" target="_blank">Submit</a>

有一个有效的example

答案 1 :(得分:2)

如果您只是想在选择选项时打开URL,我不知道您为何使用该表单。阅读以下代码:

<select name="url" onchange="window.open(this.options[this.selectedIndex].value,'_blank')">

这适用于所有浏览器即使在IE5上也是如此。

答案 2 :(得分:1)

到目前为止,这已经奏效了,虽然它很长

<a href="javascript:void((function(){ val=document.getElementsByName('url')[0].value; if(val) window.open(val)})())">click</a>

答案 3 :(得分:0)

您可以忘记使用JavaScript,因为浏览器会控制它是否在新标签页中打开。您最好的选择是执行以下操作:

<form action="http://www.yoursite.com/dosomething" method="get" target="_blank">
    <input name="dynamicParam1" type="text"/>
    <input name="dynamicParam2" type="text" />
    <input type="submit" value="submit" />
</form>

无论客户端使用哪种浏览器,都会在新标签页中打开,因为target="_blank"属性。

如果您只需要重定向而不使用动态参数,则可以使用包含target="_blank"属性的链接:

<a href="http://www.youresite.com" target="_blank">redirect</a>

答案 4 :(得分:0)

我们也有类似的要求。我们想在用户点击它时使用ajax调用从服务器端生成href url。经过大量的搜索,我们发现它实际上是由浏览器控制的。在chrome中,新打开的页面会以弹出窗口的形式打开,并被弹出窗口阻止程序阻止。我们应用程序的大多数用户都对此行为感到困惑。这是我们使用的解决方法。希望这能帮助那些遇到类似问题的人。

我们可以有一个常规链接,指向我们网站中名为LandingPage.html的实际网页。我们必须将目标设置为“_blank”以在同一浏览器选项卡中打开窗口。

<a href="LandingPage.html" id="fakeLink" target="_blank">Click to open google in the same browser window</a> 

然后我们附加了fakeLink锚元素的click事件。

 $('#fakeLink').click(function(){
        $.ajax({
            url: ""
        }).done(function() {
            localStorage.setItem('url', 'https://www.google.lk');
        });
    });

我们可以执行ajax调用并从服务器检索动态生成的url。然后我们可以将该url添加到localstorage。

目标网页可以有一个文字,向用户表明他们将在一秒钟内重定向。 “你将在1秒内被重定向到谷歌。”

在着陆页中,我们可以有一个settimeout,在该函数内部,我们可以使用window.location将用户重定向到实际页面。

 setTimeout(function(){
        window.location.assign(localStorage.getItem('url'));
    }, 1000);

希望这有帮助,这应该适用于所有浏览器,我只在IE 10和Chrome中检查过,因为我们没有使用任何浏览器相关的东西。