Извлечение файла HTML из asp.net через Internet Explorer - PullRequest
0 голосов
/ 07 сентября 2011

недавно я работал над инструментом, в котором пользователь вносит изменения в интерфейс и, нажимая кнопку Сохранить, шаблон сохраняется на сервере ... как файл HTML ... все было хорошо ... я смог сохранить файл из всех основных браузеров (я проверил на FireFox и Chrome), но когда я попытался сохранить файл из Internet Explorer ....

не выдает файл должным образом .. HTML-файл неправильно отформатирован .. из-за чего происходит сбой приложения ...

Ниже приведен правильный формат при проверке из Firefox и Chrome ...

    <tr>
                <td colspan="2" align="center">
                    <div class="searchDiv">
                        <span>Leader Board Box: </span><span class="pd2">
                            <textarea rows="5" cols="52" id="txtLeaderBoardAd" style="width:631px;"></textarea></span><br>
                        <br>
                        <span>Site Logo: </span><span style="padding-left: 34px">
                            <input type="text" size="47" id="txtLogoImage" value=""></span><span>Width: </span><span>
                            <input type="text" size="15" id="txtLogoImageWidth" value=""></span><span>Height: </span><span>
                            <input type="text" size="15" id="txtLogoImageHeight" value=""></span><br>
                        <br>
                        <span>Link Url: </span><span style="padding-left: 70px">
                            <input type="text" id="txtLogoLinkUrl" size="100" value=""></span><br>
                        <br>
                    </div>
                </td>
            </tr>


But when tried to save the same format from Internet Explorer... it emit the format like below


<TR sizset="9" sizcache="3">
        <TD colSpan="2" align="middle" nodeindex="1" nodeIndex="1">
            <DIV class="searchDiv">
                <SPAN>Leader Board Box: </SPAN>
                <SPAN class="pd2">
                    <TEXTAREA style="WIDTH: 631px" id="txtLeaderBoardAd" rows="5" cols="52"></TEXTAREA>
                </SPAN>
                <BR>
                    <BR>
                        <SPAN>Site Logo: </SPAN>
                        <SPAN style="PADDING-LEFT: 34px">
                            <INPUT id="txtLogoImage" size="47" type="text">
                        </SPAN>
                        <SPAN>Width: </SPAN>
                        <SPAN>
                            <INPUT id="txtLogoImageWidth" size="15" type="text">
                        </SPAN>
                        <SPAN>Height: </SPAN>
                        <SPAN>
                            <INPUT id="txtLogoImageHeight" size="15" type="text">
                        </SPAN>
                        <BR>
                            <BR>
                                <SPAN>Link Url: </SPAN>
                                <SPAN style="PADDING-LEFT: 70px">
                                    <INPUT id="txtLogoLinkUrl" size="100" type="text">
                                </SPAN>
                                <BR>
                                    <BR>
            </DIV>
        </TD>
    </TR>

я не понимаю ... он просто удаляет кавычки из всех атрибутов ... а также добавляет дополнительные атрибуты как sizset и sizcache ... нужно ли мне форматировать что-то дополнительное для IE

Пожалуйста, помогите ... я застрял здесь. ********************* ЭТО КАК Я СОХРАНЯЮ ФАЙЛ ********** Я использую Ajax Jquery для сохранения файла в формате HTML ...

[WebMethod]
    public static string WriteToHTMLFile(string data) 
    {
        using (StreamWriter writer = new StreamWriter(HttpContext.Current.Server.MapPath("/NewsletterTemplate/HTMLPage.htm")))
        {
            writer.WriteLine(data);
            writer.Flush();
        }
        return "Saved Successfully";
    }

и затем просто вызов вышеупомянутой функции в Javascript .. как показано ниже

$.ajax({ type: "POST", url: "AjaxMethods.aspx/WriteToHTMLFile", contentType: "application/json", data: "{'data':'" + $("#dvGetHTML").html() + "'}", success: function (data) {
                        $("#dvGetHTML").html($("#dvGetHTML").html());
                    }, error: function (data) { alert("Error in Save.. Please contact your administrator !!!" + data.responseText); }
                    });

1 Ответ

0 голосов
/ 07 сентября 2011

ахххххх .....

Я вижу, в чем твоя ошибка: -)

Ты дергаешь HTML прямо из DOM браузеров, верно?и я предполагаю, что #dvGetHTML - это div?

Мне кажется, что IE каким-то образом представляет HTML-код внутренне другим способом, чем другие браузеры, и когда вы вытаскиваете его из своегоdiv это то, что вы получаете.

В качестве эксперимента попробуйте использовать простой старый текстовый тег области, вы можете отредактировать его, и форматирование будет соответствовать старым добрым правилам pre tag.

Бонус заключается в том, что все, что напечатано в текстовой области, возвращается дословно как есть, как если бы это было поле ввода, если вы не получите странное форматирование, когда вы делаете это, вполне вероятно, что проблема соответствует ожидаемой.

Если вы докажете, что это ваша проблема, я бы использовал редактор на стороне клиента, такой как "Tiny MCE", чтобы добиться того, что вы пытаетесь сделать с div.

...