2011-05-20 39 views
7

我有一個使用ASP.NET AJAX和AJAX Control Toolkit的ASP.NET應用程序。該應用程序可以在PC上最新的瀏覽器上正常運行。它在我的iPad上也能正常工作,至少在第一次訪問應用程序時。我發現如果我關閉iPad並稍後返回頁面(通過書籤或類似內容),則該網站已損壞。我已經縮小了ASP.NET/ASP.NET AJAX問題/錯誤/限制的失敗,並且我正在尋求一些進步的幫助。ASP.NET AJAX將被禁用的原因

使用Fiddler作爲iPad的代理服務器時,我在重新打開頁面時發現了以下問題。

  1. 我的* .skin文件未正確應用。生成的樣式標記根本不包含* .skin文件中指定的一些參數。
  2. 該頁面不包含MicrosoftAjaxWebForms.js文件。 (工作時,其發射到的ScriptResource.axd參考右上面的所有ToolkitScriptManager腳本。
  3. 的頁面不包括到另一個JS文件的引用開始功能WebForm_FindFirstFocusableChild(對照)
  4. 的頁面不包括幾個隱藏字段如__LASTFOCUS,__EVENTTARGET和__EVENTARGUMENT
  5. 的頁面不使用document.forms [「aspnetForm」]並限定__doPostBack不包括腳本塊。
  6. 的頁面不包括腳本塊執行Sys系統。 WebForms.PageRequestManager._initialize
  7. 其他一些初始化腳本不存在(設置焦點,創建更新進度等)

不知何故,看起來框架決定它不是不需要這些腳本而不會發出它們。由於所有腳本都是相互關聯的,因此必須有一個共同的原因。這可能與不包含* .skin屬性的原因有關。有任何想法嗎?我會想到瀏覽器的功能,但這隻會在後續訪問該網站時發生,而不是第一次。

編輯: 絕對看起來像瀏覽器功能問題。

請求工作: 的User-Agent:Mozilla的/ 5.0(新iPad; U; CPU OS 4_3_3喜歡Mac OS X; EN-US)爲AppleWebKit/533.17.9(KHTML,例如Gecko)版本/ 5.0.2

要求所有未: 的User-Agent:Mozilla的/ 5.0(新iPad; U; CPU OS 4_3_3喜歡Mac OS X; EN-US)爲AppleWebKit/533.17.9(KHTML,例如Gecko)移動/ 8J2

將嘗試在App_Browsers中創建一個自定義文件並返回額外的信息。

+0

可能重複。 NET/iPad的Safari緩存問題?](http://stackoverflow.com/questions/5681122/asp-net-ipad-safari-cache-issue) – NotMe 2011-05-20 14:08:26

+0

你可能會考慮放在你以前的問題賞金以獲得更多的眼球 – NotMe 2011-05-20 14:08:44

回答

6

根本問題確實是ASP.NET在全屏模式下加載時將iPad識別爲普通下層「Mozilla」而非Safari,。它認爲JavaScript不被支持,等等。

該解決方案是將以下內容添加到所有的ASP.NET頁面(通過將此頁面添加到所有ASP.NET頁面派生自基頁)。

protected void Page_PreInit(object sender, EventArgs e) 
    { 
     if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparison.CurrentCultureIgnoreCase) > -1) 
     { 
      this.ClientTarget = "uplevel"; 
     } 
    } 

(我試過創建一個*。因爲它不會出現,我可以從內部我自己的參考框架的* .browser文件瀏覽器文件,但悲慘地失敗了。)

+2

或使用此修補程序創建基礎頁面,並從中獲取所有其他文件:) – 2011-05-20 14:49:25

+0

顯然,這就是我所做的:)將編輯文本以使其更明顯。 – 2011-05-20 14:50:37

+1

我會給你50票,我只是遇到了這個問題,它讓我花了幾天找到正確的答案。 – Mohgeroth 2012-04-13 17:55:03

1

我通常做這在Global.asax中[ASP的

void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    Request.Browser.Adapters.Clear(); 
} 
相關問題