使用.execCommand('insertHTML',false,html)的Javascript Absolute vs. Relative URI;

时间:2009-12-14 17:19:04

标签: javascript

到目前为止,我一直非常使用rteEditor。

问题在于这行代码:

document.getElementById(rteName).contentWindow.document.execCommand('insertHTML', false, html);

我将ABSOLUTE路径传递给html var,例如(“http://www.url.com/file.html”)。

但是当它执行这个insert命令时,输出是(“../ file.html”);

可以使用jQuery命令吗?

任何建议?

5 个答案:

答案 0 :(得分:1)

您是否尝试使用'insertImage'代替'insertHTML'?

编辑: 'insertImage'只需要获取图像的url并根据它创建一个img标记 您可以使用jQuery(例如this

)插入图像后获取图像
 var img = $("img[src='imgUrl']");

将'imgUrl'作为您添加的图片的网址,然后将所需的属性添加到该网址。

不使用jQuery的示例是第123行的here

答案 1 :(得分:1)

根据我的经验,使用原生富文本编辑器(也称为contentEditable="true"的div和designMode设置为on的iframe)非常困难。 API在浏览器中不一致,并且它们的行为通常是意外的和错误的。因此,我倾向于尽可能少地使用document.execCommand()。相反,我倾向于回复直接的DOM操作。

考虑到这一点,我将尝试解决您所描述的问题:

  • 创建内存中的图像元素并设置相应的网址。
  • 找到包含用户光标的DOM节点。
  • 将内存中的图像元素插入上一步中找到的DOM节点。

实现第二步所需的代码有点棘手,并且在不同浏览器之间存在很大差异。我会尝试在第二天或第二天发布一个工作示例。我希望这在同一时间有所帮助。

答案 2 :(得分:0)

据我所知,并且亲自体验过,这是浏览器的HTML编辑引擎固有的2.它只在您尝试插入的图像和运行HTML的地址时发生来自的编辑器位于同一个域

作为解决方案,如果您的服务器/提供商允许此操作,您可以设置指向www的第二个子域,例如

www2.example.com

并链接到图像

http://www2.example.com

这应该会导致绝对链接保持不变。

保存HTML后,您只需将所有www2.example.com替换为www.example.com

另一种更简单的方法是在www2.example.com上运行WYSIWYG编辑器并插入正确的绝对URL。

答案 3 :(得分:0)

我认为出于安全原因,您无法指定完整的网址,例如www.example.com。

答案 4 :(得分:0)

我相信你应该能够使用jQuery。

你可能想要使用

的内容
$(rteName).find('body').html('<img src="http://www.example.com/" alt="...">

但可能对选择器进行了一些更改。