0
<select id="myDropDown" onblur='launchSite()'>
    <option value="selectone" selected="true">Select One</option>
    <option value="http://www.google.com">Google </option>
    <option value="http://www.cnn.com">CNN </option>
    <option value="http://www.espn.com">ESPN </option>
</select>


<script>

function launchSite()  {
    var el = document.getElementById("myDropDown");
    var url = el.options[el.selectedIndex].value;
    window.open(url);
}
 </script>

我们有一个 Web 应用程序,当从下拉列表中选择某个值时,它会打开一个新的浏览器页面。这在所有之前测试过的浏览器(包括 ios 5 上的 Safari)中运行良好。在 ios 6 中选择下拉值后,我们会得到预期的允许/拒绝弹出窗口。但是在弹出的 Safari 上进行选择后,它就完全冻结了。奇怪的是,这种冻结并非每次都发生。只是偶尔。这可能是ios 6的错误吗?我已经尝试过onblur()像其他问题所建议的那样,但我仍然偶尔会冻结。我可以使用上面的代码看到问题。

谢谢你的帮助!

4

2 回答 2

2
function launchSite(){
    window.setTimeout(function(){
        var el = document.getElementById("myDropDown");
        var url = el.options[el.selectedIndex].value;
        window.open(url);
    },100); }

把它放在 onchange 事件处理程序中应该可以解决冻结问题

于 2013-03-07T19:14:12.600 回答
0

我们在尝试调用时遇到了一个非常相似的问题:

window.open(url, '_self')

在 Chrome 和 Safari 中。相反,请定义要在何处打开窗口:

window.open(url, '_blank')
or
window.open(url, '_new')

但是,如果您想以 '_self' 或当前窗口打开,则只需调用:

windown.location.href = url;
于 2012-12-14T21:59:31.183 回答