Есть ли правильный способ включить мой элемент <span>в следующий JavaScript? - PullRequest
0 голосов
/ 31 января 2011

У меня есть простой фрагмент JavaScript, чтобы немного защитить мой адрес электронной почты:

<p>Email:<br />
<script type="text/javascript">
    mixupE='mywebsite.com'
    mixupE=('myname' + '<span>@</span>' + mixupE)
    document.write(mixupE)
</script>
</p>

Проблема в том, что это единственный раздел кода, который не проверяет строгий xhtml. Это связано с частью span @ / span. Я только что включил span, чтобы я мог стилизовать символ @, отличный от остальной части адреса электронной почты.

У кого-нибудь есть способы получше?

В идеале я хотел бы получить все для проверки: o)

Я решил это, просто делая это в данный момент:

<p>Email:<br />
        <script type="text/javascript">
            mixupA='name'
            mixupA=('my' + mixupA)
            document.write(mixupA)
        </script><span>@</span><script type="text/javascript">
            mixupB='site.com'
            mixupB=('myweb' + mixupB)
            document.write(mixupB)
        </script>
</p>

Вероятно, не самый лучший способ сделать что-то, но, похоже, он работает, и мои страницы теперь проверяются как строгие xhtml: o)

Ответы [ 5 ]

3 голосов
/ 31 января 2011

Вам нужно обернуть элемент в блок CDATA, как описано в разделе спецификации о различиях между HTML и XHTML, в частности в разделе сценарий и элементы стиля .

Тем не менее, вы почти наверняка используете XHTML с типом содержимого text / html, поэтому вам нужно пройтись по кругу, сделав его HTML-подобным, чтобы продолжить работу в кросс-браузерном режиме. В этом случае закомментировав маркеры CDATA .

<script type="text/javascript">
    //<![CDATA[
    mixupE='mywebsite.com'
    mixupE=('myname' + '<span>@</span>' + mixupE)
    document.write(mixupE)
    //]]>
</script>
1 голос
/ 31 января 2011

Используйте косвенный способ представления <:

<script type="text/javascript">
  var lt = String.fromCharCode(60);
  mixupE='mywebsite.com'
  mixupE=('myname' + lt + 'span>@' + lt + '/span>' + mixupE)
  document.write(mixupE)
</script>
0 голосов
/ 13 февраля 2014

Самый простой ответ - просто разделить строки, чтобы они не думали, что это сущность.Это совершенно верно и почти идентично оригиналу:

<p>Email:<br />
<script type="text/javascript">
    mixupE='mywebsite.com'
    mixupE=('myname<' + 'span>@<' + '/span>' + mixupE)
    document.write(mixupE)
</script>
</p>

Нет необходимости запутывать угловую скобку.

Но не забудьте свои var и ;Упрощенно это:

<p>Email:<br />
<script type="text/javascript">
    var mixupE='mywebsite.com';
    document.write('myname<' + 'span>@<' + '/span>' + mixupE);
</script>
</p>
0 голосов
/ 22 февраля 2011

Используйте комбинацию CDATA и escape-кодов, например:

<script type="text/javascript">
//<![CDATA[
mixupE="mywebsite.com";
mixupE=("myname" + "<span>@<\/span>" + mixupE);
document.write(mixupE);
//]]>
</script>
0 голосов
/ 01 февраля 2011

Вот где я с ребятами. У меня есть следующие две возможности, которые, похоже, работают, и обе проверяются как строгие xhtml.

<script type="text/javascript">
   <!--
   var lt = String.fromCharCode(60);
   mixupE='mywebsite.com'
   mixupE=('myname' + lt + 'span>@' + lt + '/span>' + mixupE)
   document.write(mixupE)
   //-->
</script>

или

<script type="text/javascript">
   //<![CDATA[
   mixupE='mywebsite.com'
   mixupE=('myname' + '<span>@</span>' + mixupE)
   document.write(mixupE)
   //]]>
</script>

Какие-либо причины, почему я должен пойти на один из них над другим?

...