Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃
Posted
技术标签:
【中文标题】Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃【英文标题】:Javascript .Focus causing safari 8.1.3 to crash only on IPad 【发布时间】:2015-03-07 15:13:57 【问题描述】:Web 应用技术:Asp.Net 4.5
以下 javascript 的 sn-p 会导致 Safari(更新 8.1.3)崩溃。但是它在以前的 safari 版本上运行良好。该代码只是在服务器请求后将焦点重置为控制。注意:这在 Chrome、IE 和 FF 中运行良好。
var TFoc_Id
function EndRequestHandler()
try
//Maintain vertical scroll pos in panel
var panel = document.getElementById("ContentPlaceHolder1_InputPanel1");
if (panel != null)
if (typeof yPos == "number") panel.scrollTop = yPos;
//Reset focus to control after server request
if (TFoc_Id != null)
var id = TFoc_Id;
//Below causes Safari crash
if (id.indexOf("ContentPlaceHolder1_") != -1)
document.getElementById(TFoc_Id).focus();
catch (err)
【问题讨论】:
这可能不是对焦点的调用,而是其他一些东西,它看起来确实是一段奇怪的代码,并且由于没有使用参数,您可能删除了很多? @adeneo 我已将代码块更新为显示所有代码并删除了未使用的 args。 【参考方案1】:我添加了以下代码来绕过仅适用于 ipad 的 .focus。这是一个临时的快速修复。
function EndRequestHandler(sender, args)
try
var panel = document.getElementById("ContentPlaceHolder1_InputPanel1");
if (panel != null)
if (typeof yPos == "number") panel.scrollTop = yPos;
if (MobileInfo != "iPad")
if (TFoc_Id != null)
var id = TFoc_Id;
if (id.indexOf("ContentPlaceHolder1_") != -1)
document.getElementById(TFoc_Id).focus();
catch (err)
var MobileInfo
window.onload = function ()
MobileInfo = get_mobile_info();
function get_mobile_info()
var retVal
retVal = "";
if (navigator.userAgent.match(/android/i)) retVal = "Android" ;
if (navigator.userAgent.match(/webOS/i)) retVal = "webOS" ;
if (navigator.userAgent.match(/iPhone/i)) retVal = "iPhone" ;
if (navigator.userAgent.match(/iPad/i)) retVal = "iPad" ;
if (navigator.userAgent.match(/iPod/i)) retVal = "iPod" ;
if (navigator.userAgent.match(/BlackBerry/i)) retVal = "BlackBerry" ;
if (navigator.userAgent.match(/Windows Phone/i)) retVal = "Windows Phone" ;
return retVal
【讨论】:
以上是关于Javascript .Focus 导致 safari 8.1.3 仅在 iPad 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章