查到原因是因為在這些浏覽器中對第三方的cookie安全驗證比較嚴格,需要確認是用戶主動到第三方網站的,才能讀到cookie,於是加個引導頁面要用戶點擊下才能進入我們的組件。
1,首頁 判斷是否是這些浏覽器,若是則去引導頁面,其中reflag是判斷是否已經去過引導頁面。若已經引導過就不去引導頁面了。
復制代碼 代碼如下:
function safarireload()
{
var rehref=window.location.href;
if(jQuery.browser.safari&&<%=reflag %>=='0')
{
window.location.href='/safarireload.aspx?rehref='+rehref;
}
if(jQuery.browser.opera&&<%=reflag %>=='0')
{
window.location.href='/safarireload.aspx?rehref='+rehref;
}
}
後台代碼
復制代碼 代碼如下:
public string reflag="3";
if (Request.QueryString["reflag"] != null && Request.QueryString["reflag"].ToString() != "")
{
reflag = Request.QueryString["reflag"].ToString().Trim();
}
else
{
reflag = "0";
}
2,引導頁面 rehref是要回去的頁面
<asp:Button ID="Button1" CssClass="rb1-12" runat="server" Text="您使用的蘋果浏覽器或opera,請點擊進入電影票訂購組件!" OnClick="Button1_Click" />
後台代碼
復制代碼 代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (Request.QueryString["rehref"] != null && Request.QueryString["rehref"].ToString() != "")
{
kaixindo.syslog(Request.QueryString["rehref"].ToString());
Response.Redirect(Request.QueryString["rehref"].ToString() + "&reflag=1");
}
}
在引導頁面用js取網頁url的參數rehref,頁面性能更好。不過先這樣了。
代碼冗余或效率底下的歡迎指正。希望對有些人有些幫助。