Swathi_Shri Ответов: 0

Post back не происходит в chrome, в то время как функциональность происходит в IE правильно.


Когда я нажимаю кнопку Создать, файл должен быть загружен в формате XML . Эта функция корректно работает в IE. В chrome кнопка Create не выполняет никаких действий. В Chrome нет обратной связи, которая происходит.

Код написан таким образом, что во время пререндера файл загружается.

Что я уже пробовал:

ASPX Code
<pre>                        <div style="margin: 6px;"><ent:ERadioButtonGroup id="SaveAsFileRadioButton" runat="server" GroupName="FileTarget">
                        </ent:ERadioButtonGroup><label for="SaveAsFileRadioButton"> Download network template as a file</label></div>
                        <a id="DownloadStubLink" runat="server" target="_blank" style="display:none;"></a>
                        <div style="margin: 6px 6px 0 6px;"><ent:ERadioButtonGroup id="SaveInDatabaseRadioButton" runat="server" GroupName="FileTarget">
                        </ent:ERadioButtonGroup><label for="SaveInDatabaseRadioButton"> Store network template in database</label></div>
                        <table class="EditProfile FixedTable" style="margin-left: 15px">
                            <colgroup>
                                <col class="Column1" />
                                <col class="Column2" />
                            </colgroup>
                            <tr>
                                <td>Network template name:</td>
                                <td>
                                    <ent:ETextBox id="NameTextBox" runat="server" cssclass="InputField" maxlength="255"></ent:ETextBox>
                                    <ent:ERequiredValidator id="RequiredNameValidator" runat="server" 
                                        errormessage="Please supply name for Network template" 
                                        controltovalidate="NameTextBox"
                                        evaluationfunction="ValidateNameTextBox"></ent:ERequiredValidator>
                                </td>
                            </tr>
                            <tr>
                                <td>Network template description:</td>
                                <td><ent:ETextBox id="DescriptionTextBox" runat="server" textmode="MultiLine" maxlength="255" cssclass="InputField TextBox" width="239px"></ent:ETextBox></td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
            <iframe title = "Download Frame" src="../../Common/Images/empty.gif" id="DownloadFrame" style="display:none;"></iframe>
            <script type="text/javascript">
                var saveAsFileCtrls = null;
                var storeToDBCtrls = null;

                function InitCtrls()
                {
                    if(storeToDBCtrls == null)
                    {
                        saveAsFileCtrls = new Array();
                        storeToDBCtrls = new Array(document._all('NameTextBox'),
                                                    document._all('DescriptionTextBox'));
                    }
                }
                function IsPageValid()
                {
                    return EValidatorValidate('RequiredNameValidator');
                }
                function setSaveInDatabaseChecked()
                {
                    document.getElementById('SaveInDatabaseRadioButton').checked = true;
                }
                function RefreshCtrlStatus()
                {
                    InitCtrls();
                    IsPageValid();
                    document.getElementById("NameTextBox").onfocus = setSaveInDatabaseChecked;
                    document.getElementById("NameTextBox").onmousedown = setSaveInDatabaseChecked
                    if(document.getElementById('SaveInDatabaseRadioButton').checked)
                        document.getElementById("NameTextBox").focus();
                }

                function SaveButtonClicked()
                {
                    
                    debugger;
                    if(!IsPageValid())
                        return;

                    if(document._all('SaveAsFileRadioButton').checked)
                    {
                        event.returnValue = false;
                        var downloadFrame = document.frames['DownloadFrame'];
                        downloadFrame.location = document._all('DownloadStubLink').href;
                        // To handle the moment the "File Download dialog" has been closed
                        window.document.body.onfocus = new Function('OnActivate();');
                    }
                }
                
                function OnActivate()
                {
                    // The dialog has been closed - go to the previos page
                    document._all('CancelButton').click();
                }


Code Behind

private void CreateButton_Click(object sender, EventArgs e)
        {
            //Start creation process
            pageData.SaveTemplateToDatabase(NameTextBox.Text, DescriptionTextBox.Text);
            NameTextBox.Text = DescriptionTextBox.Text = String.Empty;
            AxRedirect.Return();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void NetworkCopyPage_PreRender(object sender, EventArgs e)
        {
            if(pageParams.ProduceFile)
            {
                Response.Clear();
				Response.ClearHeaders();
				Response.Cache.SetCacheability(HttpCacheability.Public);
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=NetworkTemplate.xml");
                Response.Write(pageData.XmlText);
                Response.End();
            }
            else
            {
                DisplayData();
                RegisterStartupScript(StringMessages.STARTUP_SCRIPT_KEY, 
                    DecorateScript(StringMessages.STARTUP_SCRIPT));
                CreateButton.Attributes.Add("onclick", "SaveButtonClicked();");
                SaveAsFileRadioButton.Attributes.Add("onclick", StringMessages.ON_CLICK_SCRIPT);
                SaveInDatabaseRadioButton.Attributes.Add("onclick", StringMessages.ON_CLICK_SCRIPT);
            }
        }

F-ES Sitecore

Вызывается ли SaveButtonClicked? Когда вы шагаете через код строка за строкой, в какой момент он перестает делать то, что делает в IE?

Swathi_Shri

Да, кнопка сохранения вызывается.

Как только мы нажмем на переключатель -

Download network template as a file

и нажмите на кнопку Создать , файл будет загружен.
это происходит в IE.

Richard Deeming

Ваш Javascript имеет множество ссылок на document._all Это не стандартное свойство, и вы не объявили его нигде в коде, который вы показали.

Если вы действительно используете document.all, это нестандартное и устаревшее свойство, которое может не работать в современном браузере.
Document.all - Web API | MDN[^]

Вы также используете document.frames, что является нестандартным. Так и должно быть window.frames вместо:
Window.frames - веб-API | MDN[^]

Вам нужно проверить консоль разработчика в Chrome, чтобы увидеть, если вы получаете какие-либо ошибки Javascript.

Swathi_Shri

Привет Ричард,
Я их тоже изменил. Я использовал document.getElementById вместо document.all

0 Ответов