簡體   English   中英

回發在 Firefox 中不適用於 asp.net(C#) 頁面

[英]Post back not working in Firefox for asp.net(C#) pages

我對 mozilla firefox 有問題。

我正在使用 asp.net 語言開發一個網站,並且我在表單中有一個按鈕。 當我單擊 onclick 屬性上的按鈕時,我正在調用一個函數,並且該函數執行回發。

這個 Scenerio 正在使用 chrome 和 internet exploerer。 但它不適用於 mozilla firefox。 我在控制台中收到此錯誤:TypeError:對嚴格模式調用函數的訪問被審查..

我的示例按鈕是:

<input id="Button1" type="button" onclick="sampleFunc('sample');" value="button" />

我的示例函數是:

function sampleFunc(reqMessage)
{
  __doPostBack('', reqMessage);
}

我在互聯網上搜索。 很多人都有rhis問題,但沒有任何解決方案。

你有關於這個錯誤的任何解決方案嗎(!)

編輯 1:我在 jquery 網站上找到了一張票 根據勾選,你修復了那個錯誤。 但我應用了相同的解決方案,但我的錯誤仍在繼續。 :(

ASP.Net ScriptManager 代碼使用 __doPostBack 中的“caller.callee”遍歷調用堆棧以檢測無限遞歸。 如果調用堆棧中的任何函數被解析為“使用嚴格”,那么在 FireFox 上將失敗。 解決方法是讓一個“use strict”范圍之外的函數調用setTimeout()來調用調用__doPostBack的函數。 setTimeout()將您帶出調用堆棧。

最后我找到了答案。

我正在使用alertfy javascript 庫來彈出消息。 此庫使用“嚴格使用”表達式。

我從這個庫中刪除了這個表達式,現在沒有問題了。 我的代碼適用於所有瀏覽器。

我的建議是將 javascript 和 Html 分開......而不是使用內聯調用,你可以試試這個方法

請注意,您必須加載 jquery 才能使其工作。

例如:

<script>
$(document).ready(function()
{

     $(#Button1).click(function()
      {
        PostBack();

        });

});

</script>
    <input id="Button1" type="button" value="button" />

我有一個好消息,這個問題可能會在最新的 Firefox 和 jQuery 3.5.1 中得到解決。 我今天測試了報告的場景以及與“嚴格使用”規則相關的其他 __doPostBack 有問題的場景,所有這些場景似乎都沒有任何 JS 錯誤。

使用最新的 jQuery 3.5.1 和最新的 Firefox 84.0.2 是否仍然遇到此問題?

這是一個解決方法 -

將服務器端按鈕控制器添加到您的 aspx 頁面 -

<asp:Button id="btn" runat="server" onclick="btn_click_event" ClientIDMode="static"/>

在您的代碼隱藏頁面 (aspx.cs) 上定義將在回發后執行實際工作的事件方法。 現在隱藏這個按鈕控制器。

<asp:Button id="btn" runat="server" onclick="btn_click_event"  ClientIDMode="static" style="display:none" />

不要使用Visible=false因為它根本不會渲染按鈕。

現在將您的 javascript 函數更改為只調用click `btn'

function sampleFunc()
{
    $('#btn').click();
}

並在您的 HTML 輸入按鈕 onclick 方法中調用此函數 -

<input id="Button1" type="button" onclick="sampleFunc();" value="button" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM