2009-05-16 4 views
0

Я работаю в DotNetNuke, но на самом деле это не проблема строго DNN.Почему document.write больше не работает для меня?

Я использую DNN условие метод в моем модуле под названием FormatEmail, который использует document.write написать письмо по электронной почте, как например, так:

<script language="text/javascript"> 

<!-- 
    document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62)) 
// --> 

</script> 

Я только что установил DNN 5, который я знаю, что включает в себя Jquery среди других дополнений к кодовой базе. Будет ли jQuery остановить работу document.write-кода?

Должно ли DNN использовать другой метод для маскировки текста из ботов?

Должен ли я прекратить использование этого метода в качестве маскировки моих адресов электронной почты?

Обновление: Страница не использует xhtml.

+0

Что-то странное происходит в FF, когда я запускаю ваш скрипт. Иногда это работает, иногда это не так, а иногда JS вообще перестает работать! Убегайте от document.write и используйте подход Самира. – bbmud

+0

Я был близок к этому, но все это было захоронено в методе DNN, который я хотел продолжить использовать. –

ответ

2

Я думаю, что я нашел конкретный ответ в DNN багтрекер:

вывод должен быть:

<script type="text/javascript"> 

//<![CDATA[ 
document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,84,101,115,116,64,106,101,102,102,109,97,114,116,105,110,46,99,111,109,34,62,84,101,115,116,64,106,101,102,102,109,97,114,116,105,110,46,99,111,109,60,47,97,62)) 
//]]> 

</script> 

Похоже, что проблема связана с моим сайтом (который не запускал XHTML).

Ошибка: here.

5

Я не знаю, произошло ли это, но document.write и document.writeln не будут работать, если ваш сайт говорит браузеру строгого XHTML. Я считаю, что для этого вам нужно использовать строгий DOCTYPE и установить заголовок Content-Type на application/xml+xhtml, а не на text/html (по умолчанию на многих серверах). Это связано с тем, что манипулирование DOM таким образом может сломать его. Например, если я ставлю следующую полдорогу вниз проверенный веб-страницу:

<script type="text/javascript"> 
<!-- 
    document.write("</body>"); 
// --> 
</script> 

Документ будет проверить и быть XHTML совместимыми, но не будет работать в большинстве браузеров.

Альтернативой является создание узла DOM, в который должен быть вставлен адрес электронной почты, и вставить его при загрузке страницы. Например:

<p>My email address is <span id="email"></span>.</p> 
<script type="text/javascript"> 
<!-- 
    document.body.onload = function() { 
     document.getElementById("email").textContent = String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62); 
    }; 
// --> 
</script> 

Или, как вы JQuery установить:

<p>My email address is <span id="email"></span>.</p> 
<script type="text/javascript"> 
<!-- 
    $(function() { 
     $("#email").text(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62)); 
    }); 
// --> 
</script> 
+0

Firefox говорит, что им в режиме причуд, поэтому я не думаю, что его XHTML делает это.Я обновлю вопрос с этой информацией ... но я могу попробовать ваше решение jQuery (редактирование ядра DNN ...) –

0

Джефф,

Вы нашли правильное решение, но если честно, я не совсем уверен в пользу этого. Да, электронные письма могут быть соскаблированы, но этот процесс просто совершенно излишний, по крайней мере, по моему мнению. Нет необходимости запускать javascript, чтобы отобразить ссылку электронной почты.

Это всего лишь мои 0,02 доллара США по вашему конкретному вопросу.

+0

это, вероятно, должно быть в комментарии ... У меня действительно было несколько запросов, если люди, которые используют электронная почта моего сайта защищена таким образом, поэтому я был рад сказать, что это так. Мои модули использовали данный DNN-метод в течение некоторого времени, и было разочаровывать его внезапное прекращение работы, когда я установил DNN 5. –