Самозакрывающийся вопрос с тегом document.innerHTML в Javascript - PullRequest
1 голос
/ 14 сентября 2011

Я пишу плагин для браузера Firefox (Greasemonkey), Opera и Chrome в Javascript для веб-сайта.Проблема в том, что когда я загружаю document.innerHTML в переменную,

<form name="foo" action="foo.php" method="get">
<td id="td">text:
<input name="k" type="text" />
&nbsp;</td>
</form>

... исходный код сайта выше (для которого я пишу плагин) преобразуется в

<form name="foo" action="foo.php" method="get">
<td id="td">text:
**<input name="k" type="text">**
&nbsp;</td>

... вот этот.Как видите, самозакрывающийся тег <input /> больше не закрыт, а тег </form> также исчез.Я погуглил почти весь интернет, но ни одно из прочитанных мной решений не решило мою проблему.

Ответы [ 2 ]

4 голосов
/ 14 сентября 2011

Закрывающие теги </form> отображаются для меня в Firefox при получении .innerHTML.

Я бы предположил, что отсутствующий тег связан с вашей разметкой, которая, я уверен, недействительна:

  <!-- A <form> wrapping a <td> ? -->
<form name="foo" action="foo.php" method="get">
    <td id="td">text:
        <input name="k" type="text" />
        &nbsp;
    </td>
</form>

Родитель элемента <td> должен быть <tr>, а не <form>.

С учетом данной разметки:

<table>
    <tr>
        <form name="foo" action="foo.php" method="get">
            <td id="td">text:
                <input name="k" type="text" />
                &nbsp;
            </td>
        </form>
    </tr>
</table>

...Firefox дает мне innerHTML для <table>:

<tbody>
    <tr>
        <form name="foo" action="foo.php" method="get"></form>
            <td id="td">text:
                <input name="k" type="text">
                &nbsp;
            </td>

    </tr>
</tbody>

. Попытка исправить недопустимую разметку.

DEMO: http://jsfiddle.net/grM4c/

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

Что ж, взглянув на ваш код, вы заботитесь о создании формы с незамкнутым TD в середине.

<form name="foo" action="foo.php" method="get">
<td id="td"><span>text:<input name="k" type="text" /></span></td>
</form>

Попробуйте так.

...