передать несколько innerhtml, чтобы обновить статус Twitter и кодировать - PullRequest
0 голосов
/ 19 июня 2011

Я пытаюсь создать ссылку, которая твитит динамически устаревающее содержимое ряда элементов div в одном предложении.

Javascript

function toggle(){
      var joe = document.getElementById("fulltxt");
      document.getElementById("tweet").setAttribute('href','http://twitter.com/home?status=' + 

joe.innerHTML)
  }

Содержание, которое я хочу чирикать

<div id="fulltxt">
<div id='action'> actiontext </div>
<div id='reason'> reasontext</div>
<div id="party"> partytext </div>
</div>

ссылка на твит

<a id="tweet" href='#' onClick="toggle(this.value)">שתף בטוויטר</a>

Проблема, которую я получаю,

Invalid Unicode value in one or more parameters /intent/tweet?source=webclient&text=%3Cdiv+id%3D%22action%22%3E%F9%EC%E5%ED%3C%2Fdiv%3E%E5%E6%E4+%E1%E2%EC%EC%3Cdiv+id%3D%22party%22%3E%E1%E9%E1%E9+%F0%FA%F0%E9%E4%E5%3C%2Fdiv%3E

Возможны две проблемы

  1. теги html - поэтому вместо использования fulltxt
  2. язык - (это на иврите) Я думаю, что это может быть проблема с кодировкой

чтобы проверить это, я заменил fulltxt в функции на id одного из отдельных div-ов, и когда содержимое отдельного div-а написано на английском языке, оно работает, но когда оно на иврите, выдает ошибку

1 Ответ

1 голос
/ 19 июня 2011

Вы правы, это проблема кодировки.Также innerHTML будет включать теги вложенных элементов div.IE поддерживает innerText, а остальные используют textContent

function toggle(){
  var joe = document.getElementById("fulltxt");
  var text = joe.textContent?joe.textContent:joe.innerText;
  document.getElementById("tweet").setAttribute('href','http://twitter.com/home?status=' + 
  encodeURIComponent(text);
}

encodeURIComponent

Кодирует универсальный идентификатор ресурса (URI), заменяякаждый экземпляр определенных символов состоит из одной, двух, трех или четырех escape-последовательностей, представляющих кодировку UTF-8 символа (будет только четыре escape-последовательности для символов, состоящих из двух «суррогатных» символов).

...