UIWebview 和 iPhone 内容不回发(ASP.NET 浏览器功能问题)

问题描述 投票:0回答:2

我有一个简单的页面,它的结构如下(伪代码):

<aspx page>
    <ascx control>
        <asp:dropdownlist id="dd1" autoPostback=true />
        <asp:dropdownlist id="dd2" />
    </ascx control>
</aspx page>

在任何桌面浏览器中,dd1 都会回发并触发“SelectedIndexChanged”服务器事件。 然而,在 iPhone safari 或 iPhone webview 中,不会进行回发。 我知道这一点是因为没有显示网络活动指示器,并且我已将调试器连接到捕获所有服务器端事件的站点,并且它从未被命中。 有时,大约每 2 小时一次,回发在 iPhone 上确实有效,但极其罕见且间歇性。

Dd1 是一个日期下拉列表,加载取决于日期下拉列表中所选项目的时间段下拉列表。 这种形式在很多地方被重复使用,我不想改变基本结构,除非这是最后的努力。

Safari 设置中启用了 JavaScript。

足够简单吧? 我正在尝试找出如何调试 webview 上的 javascript 错误,但我想知道是否有人知道造成这种行为的奇怪之处。

iphone asp.net uiwebview safari xamarin.ios
2个回答
7
投票

iPhone UIWebView 的用户代理无法被 ASP.NET 4.0 识别,因此 asp.net 作为默认值,即不包含 javascript 的页面的下层版本。 iPhone 的 webview 用户代理是:

Mozilla/5.0(iPhone;U;CPU iPhone OS 4_3_5,如 Mac OS X;en-us)AppleWebKit/533.17.9(KHTML,如 Gecko)Mobile/8L1

为了避免这种情况发生,我将页面的“ClientTarget”属性更改为“UpLevel”,这绕过了 asp.net 尝试找出浏览器功能的过程,只提供“Uplevel”版本的 javascript 等。

我页面的Page_Load中的解决方案:

Me.ClientTarget = "上层"

this.ClientTarget = "上层";


0
投票

我也有类似的问题。我在 maui 应用程序中为 vebview 使用了 customagent,但它没有发送必要的用户代理字符串。我必须手动添加用户代理字符串。您可以将其添加到您的页面构造函数中。

#if IOS
        webView.HandlerChanged += (s, e) =>
        {
            if (webView.Handler?.PlatformView is WebKit.WKWebView iosWebView)
            {
                iosWebView.CustomUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Mobile/15E148 Safari/604.1";
                iosWebView.CustomUserAgent = (iosWebView.CustomUserAgent ?? "") + " MyIosTags";
            }
        };
#endif
© www.soinside.com 2019 - 2024. All rights reserved.