我在过去的几天里检查了大量的例子,但仍然无法找到解决我的困境的答案。为了让我先解释一下我的困境,我会向你展示一些我有所作为的例子,然后解释一下我是如何工作的(但似乎无法实现)。
这有效:
<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。谢谢: - )
答案 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中检查过,因为我们没有使用任何浏览器相关的东西。