传递多个innerhtml来更新twitter状态并进行编码

时间:2011-06-19 10:19:42

标签: javascript innerhtml encode getelementbyid

我正在尝试建立一个链接,将多个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标签 - 所以我需要将个别div(动作+原因+派对)串起来而不是使用fulltxt
  2. 语言 - (它的希伯来语)我认为它可能是一个编码问题
  3. 测试它,我用一个单独的div的id替换了函数中的fulltxt,当个别div的内容是英文时它可以工作但是当它在希伯来文时它给了我一个错误

1 个答案:

答案 0 :(得分:1)

你是对的,这是一个编码问题。 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)组件通过替换每个   一个特定字符的实例,   两个,三个或四个转义序列   表示的UTF-8编码   性格(只会四个逃脱   由...组成的字符序列   两个“代理”人物。)