0

ユーザーが私の Web サイトにログインすると、アクティブなプロモーションがあるかどうかを確認し、アクティブなプロモーションがある場合は、ポップアップ iFrame にメッセージを表示したいと考えています。

これは IE8 と IE9 では機能しますが、FF や Chrome では機能しません。

Chrome を使用すると、ページは document.ready 関数を単純にループします。つまり、document.ready と showOpeningMessages() のコードを実行しますが、iFrame は表示されず、すぐに document.ready に戻り、プロセスを繰り返します。ページがリロードされたかのように。

コードは次のとおりです。

ページ読み込みの一部としての C# コード ビハインド

            // session variable will be null to begin with to display message
        string promotionOpeningMessagesViewed = Session["promotionOpeningMessagesViewed"] == null ? "0" : "1";



        Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"pageScript", @"

function openingMessagesModalID()
{
    var id = '" + promotionOpeningMessagesPanel.ClientID + @"';
    return id;
}

function countOpeningMessages()
{
    var id = '" + mgr.PromotionOpeningMessageList.Count.ToString() + @"';
    return id;
}

function showOpeningMessages()
{
    $('#iframepromotionOpeningMessages').attr('src','PromotionOpeningMessages.aspx');
    document.getElementById('" + okayOpeningMessagesButton.ClientID + @"').style.display = 'block'; 
}

$(document).ready(function() {

    if (countOpeningMessages() != '0' && '" + promotionOpeningMessagesViewed + @"' == '0') {
        document.getElementById('" + dummyButton.ClientID + @"').click();
    };
});

", true);

これはマークアップです:

    <asp:Panel runat="server" ID="promotionOpeningMessagesPanel" style="display:none;" CssClass="openingMessageBox" >
    <iframe id="iframepromotionOpeningMessages" frameborder="0" src="about:blank" style="border:none; width: 100%; height: 90%  "></iframe>
     <asp:LinkButton ID="okayOpeningMessagesButton" runat="server" 
                Text="<%$ Resources:UIText,  OK%>" 
                CssClass="buttons positive BtnAdd rightAlignButton"
                style="display:none;" />
     <asp:LinkButton ID="dummyButton" runat="server" 
                Text="<%$ Resources:UIText,  OK%>"
                CssClass="buttons positive BtnAdd"
                OnClientClick="showOpeningMessages();"
                style="display:none;" />
</asp:Panel>

<ajaxControlToolkit:ModalPopupExtender runat="server" 
    ID="promotionOpeningMessagesModalPopupExtender"
    BehaviorID="promotionOpeningMessagesModalPopupExtender"
    BackgroundCssClass="modalBackground"
    PopupControlID="promotionOpeningMessagesPanel" 
    RepositionMode="RepositionOnWindowResizeAndScroll"
    OkControlID="okayOpeningMessagesButton"
    TargetControlID="dummyButton" />

助けてくれてありがとう

4

1 に答える 1

0

私は別のルートを決定し、JQuery Popup Dialog API を使用するようにコードを作り直しました。これははるかにうまく機能します。

于 2013-06-12T12:21:57.297 に答える