奇怪的pasteHTML问题(难度大),高手请进!

好记忆不如烂笔头abc 2006-03-23 09:16:29
<script>
//var url='ok';
var url='<script>alert("ok");</script\>';
var tmp=document.selection.createRange();
tmp.pasteHTML(url);
</script>

执行上面的javascript时,没有任何反应,系统并没有弹出ok字样,感觉其并没有被执行。
而如果url='ok',页面则可以写出ok字样来,这是为什么呢?难道pasteHTML过滤<script>的执行?
有没有办法让其alert出ok来呢?

多谢高手帮忙!
...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
meizz 2006-03-27
  • 打赏
  • 举报
回复
<script defer> 添加 defer 属性
  • 打赏
  • 举报
回复
to eglic(圪圪) (错过的,还能找回来么?) :
var url='<script>alert("ok");</'+'script>';
不行。

期待中。。。
是是非非 2006-03-23
  • 打赏
  • 举报
回复

var url='<script>alert("ok");</script\>';

---》

var url='<script>alert("ok");</'+'script>';

parseHTML不能这么做
yiyioo 2006-03-23
  • 打赏
  • 举报
回复
改成这样试试
var url='<script>alert(\"ok\");</script\>';


我的浏览器竟然不能用pasteHTML,奇怪~~~
yjgx007 2006-03-23
  • 打赏
  • 举报
回复
For predictable results, paste only well-formed HTML text that fits within the given text range.
ilvs 2006-03-23
  • 打赏
  • 举报
回复
不执行的原因:<script>标签只在浏览器第一次文档加载中被解析.
但是可以用创建iframe的办法来实现,去掉前面的pasteHTML吧..如果真要那种方法,你可以把下面的代码再改改就是了.只要保证url代码在iframe中输出就OK了.


完整的代码:
/* var tmp = document.selection.createRange( );
var newHTML = "<span class='newSpan'>" + tmp.text + "</span>";
tmp.pasteHTML(newHTML);*/
var tmp = document.selection.createRange();
var url="<script>alert(\'ok啦!你选择的文字是不是"+tmp.text+"\啊?')<\/script\>";
//tmp.pasteHTML(url);
var jsCode = url;
var jsIframe = document.createElement("iframe");
jsIframe.style.display = "none";//把jsIframe隐藏起来
document.body.appendChild(jsIframe);
with(window.frames[window.frames.length - 1]){
document.open();
document.write(jsCode); //执行JS代码
document.close();
}
jsIframe.outerHTML="";//执行后删除iframe对象
}

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧