我目前正在开发一个Web应用程序,我需要打开一个弹出窗口来显示报告。问题是某些版本的资源管理器不支持window.open javascript函数,所以在这种情况下我抓住错误并用location.href打开新的url。代码如下:
try {
window.open(url, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
} catch(e) {
location.target = "_blank";
location.href = url;
}
问题是location.target无法正常工作,我想知道是否有办法指定location.href的目标,以便可以在新选项卡中打开它。
答案 0 :(得分:25)
尝试这个,模拟锚点击。
var a = document.createElement('a');
a.href='http://www.google.com';
a.target = '_blank';
document.body.appendChild(a);
a.click();
答案 1 :(得分:12)
问题是某些版本的资源管理器不支持window.open javascript函数
说什么?你能为这个陈述提供参考吗?尊重,我认为你一定是错的。例如,IE6和IE9上的This works。
大多数现代浏览器不会让您的代码使用window.open
,除非直接响应用户事件,以防止垃圾邮件弹出等等;也许这就是你的想法。只要您在响应用户事件时仅使用window.open
,就可以使用window.open
- 使用所有版本的IE。
无法使用location
打开新窗口。只需window.open
,或者用户点击target="_blank"
的链接。
答案 2 :(得分:12)
您可以在onclick工作的任何元素上使用它:
onclick="window.open('some.htm','_blank');"
答案 3 :(得分:3)
你可以试试这个:
<script type="text/javascript">
function newWindow(url){
window.open(url);
}
</script>
并调用函数
答案 4 :(得分:3)
如果您使用@qiao的解决方案,也许您会想要删除附加的子项,因为标签保持打开状态,随后的点击会向DOM添加更多元素。
// Code by @qiao
var a = document.createElement('a')
a.href = 'http://www.google.com'
a.target = '_blank'
document.body.appendChild(a)
a.click()
// Added code
document.body.removeChild(a)
也许有人可以在他的帖子上发表评论,因为我不能。
答案 5 :(得分:2)
如果您使用<a/>
来触发报告,则可以尝试此方法。在window.open()
失败时,不要尝试生成新窗口,而是使默认方案通过target
打开一个新窗口(如果window.open()
成功则阻止它。)
HTML
<a href="http://my/url" target="_blank" id="myLink">Link</a>
JS
var spawn = function (e) {
try {
window.open(this.href, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
e.preventDefault(); // Or: return false;
} catch(e) {
// Allow the default event handler to take place
}
}
document.getElementById("myLink").onclick = spawn;
答案 6 :(得分:0)
为什么不在页面上设置隐藏的锚标记,并根据需要设置目标,然后在需要弹出时模拟单击它?
How can I simulate a click to an anchor tag?
这适用于window.open不起作用的情况
答案 7 :(得分:0)
截至2014年,您可以触发点击<a/>
标记。但是,出于安全原因,您必须在click
事件处理程序中执行此操作,否则浏览器会将其标记为弹出窗口(某些其他事件可能允许您安全地触发打开)。
答案 8 :(得分:0)
<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>