2011-10-25 62 views
0

因此,最终我想要一个greasemonkey脚本,但现在我只用萤火虫来测试我的html/javascript。插入的代码产生意想不到的结果

我有这个代码插入一个按钮在博客工具的HTML工具栏。 该按钮应该用“”代替所有 ,因为博客似乎只是随机将 添加到我的博客文章中,并可能导致发布的文章看起来很奇怪(在 之间分隔的一串词不会打破在中间不同于用“”分隔的相同单词)。

document.getElementById("postingHtmlToolbar").firstChild.innerHTML += '<div id="SP" class="goog-inline-block goog-toolbar-button" title="SP" role="button" style="-moz-user-select: none;"><div class="goog-inline-block goog-toolbar-button-outer-box"><div class="goog-inline-block goog-toolbar-button-inner-box"><a href="javascript:document.getElementById(\'postingHtmlBox\').value = document.getElementById(\'postingHtmlBox\').value.replace(/&nbsp;/g, \' \');"><b>SP</b></a></div></div></div>'; 

哪些修剪格式只是留给我们。

<a href="javascript:document.getElementById('postingHtmlBox').value = document.getElementById('postingHtmlBox').value.replace(/&nbsp;/g, ' ');"><b>SP</b></a> 

有趣的是,相同的代码(减去href,javascript:东西)从萤火虫运行完美。

但是当它像这样插入并运行时,它将空白整个网页并将document.getElementById('postingHtmlBox').value.replace(/&nbsp;/g, ' ')的值写入此黑色页面。

我忘记了一些愚蠢的东西吗?这是否应该发生?我有一些愚蠢的语法错误吗?你会提出什么样的解决方案?

回答

1

不要将JS代码放入href。使用onclick

<a href="javascript//" onclick="document.getElementById('postingHtmlBox').value = document.getElementById('postingHtmlBox').value.replace(/&nbsp;/g, ' ');"><b>SP</b></a> 
+0

我尝试了一些非常类似的东西,将再试一次。 – Jonathon

+0

它不喜欢的JavaScript//(它认为这是一个地址)所以,我用JS代替它:void(0);和萤火虫显示:'SP' 但它似乎不再运行代码,没有反应,至少点击它(没有变化,没有错误。) – Jonathon

+0

我认为它工作,但另一个错误突然出现在相同的时间,萤火虫或其他层将' '转换为正则表达式中的“”。 浏览器/网站真的必须开始下定决心,这两件事情是否相等,因为这种中途的事情,有时他们和其他时间他们不是真的很棘手。 – Jonathon

1

尝试将void(0);添加到href的末尾。

基本上,最后一个语句的输出(如果有的话)替换文档(我有同样的问题),所以使得最后一条语句中不包含任何输出将避免该问题

+0

我添加它,得到A HREF看起来像'的javascript:的document.getElementById( 'postingHtmlBox')值%20 =%20document.getElementById( 'postingHtmlBox')value.replace(/。 %C2%A0/g,%20'%20'); void(0);' 但是这似乎阻止我激活按钮,现在当我点击它时,没有任何反应(没有错误,没有改变)。 – Jonathon

+0

这些字符的URL是如何编码的?如果是这样,尝试用原始字符替换%xx –

+0

没有Firebug副本似乎正在添加它们,我正在输入正常字符和萤火虫显示正常字符时,我看他们 (注:将远离计算机的下一个所以即时响应将停止) – Jonathon

相关问题