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