Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用.execCommand(';insertHTML';,false,html)的Javascript绝对URI与相对URI;_Javascript - Fatal编程技术网

使用.execCommand(';insertHTML';,false,html)的Javascript绝对URI与相对URI;

使用.execCommand(';insertHTML';,false,html)的Javascript绝对URI与相对URI;,javascript,Javascript,到目前为止,我一直非常成功地使用RTE编辑器 问题出在这一行代码中: document.getElementById(rteName).contentWindow.document.execCommand('insertHTML', false, html); 我正在向html变量传递一个绝对路径,如(“”) 但是当它执行这个insert命令时,输出是(“../file.html”) 可以改用jQuery命令吗 有什么建议吗?您是否尝试过使用“insertImage”而不是“insertHTM

到目前为止,我一直非常成功地使用RTE编辑器

问题出在这一行代码中:

document.getElementById(rteName).contentWindow.document.execCommand('insertHTML', false, html);
我正在向html变量传递一个绝对路径,如(“”)

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

可以改用jQuery命令吗


有什么建议吗?

您是否尝试过使用“insertImage”而不是“insertHTML”

编辑: “insertImage”只需获取图像的url,并基于该url创建一个img标记。
使用jQuery插入图像后,可以获得图像,如下所示:

“imgUrl”是您添加的图像的url,然后向该图像添加所需的属性


不使用jQuery的示例在第123行。

根据我的经验,使用本机富文本编辑器(即使用
contentEditable=“true”
的div或将
designMode
设置为
on
的iFrame)非常困难。API在不同浏览器之间不一致,它们的行为通常是意外的和有缺陷的。因此,我倾向于尽可能少地使用
document.execCommand()
。相反,我倾向于回答直接DOM操作

考虑到这一点,以下是我如何尝试解决您描述的问题:

  • 创建内存中的图像元素并设置适当的url
  • 查找包含用户光标的DOM节点
  • 将内存中的图像元素插入到上一步中找到的DOM节点中

实现第二步所需的代码有些棘手,并且在不同的浏览器中差异很大。在接下来的一两天里,我将尝试发布一个有效的示例。同时,我希望这能有所帮助。

据我所知,我自己也经历过,这是1。固有的浏览器的HTML编辑引擎和2。只有当您尝试插入的图像和运行HTML编辑器的地址位于同一域时才会发生这种情况

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

www2.example.com
并将图像链接为

http://www2.example.com
这将导致绝对链接保持不变

保存HTML后,只需将所有出现的
wwww2.example.com
替换为
www.example.com


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

我认为由于安全原因,您不能指定完整的url,例如www.example.com。

我认为您应该能够使用jQuery

你可能会想使用一些类似于

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

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

在使用javascritp的WYSWYG rteEditor上插入图像的绝对路径。(第三方)现在的问题是,我需要传递其他img参数,但输出结果如下:这对某些图像有效吗?你能缩小失败的原因吗?看起来你的引号关闭了,和/或你正在将html编码的字符混合到样式中。几次尝试后,结果是:html=“”使用insertHTML,响应返回时没有图像的完整路径://错误使用insertImage问题在于令人上瘾的参数:我尝试了插入引号以传递其他参数的技巧,但insertImage对字符串进行了编码,给出了错误的结果:附加参数是什么意思?img的属性标签?你说你用insertImage尝试的与insertHTML略有不同。你用html=“””尝试过insertImage吗?是的,我指的是属性。insertImage只接受src属性。因此,作为你的示例,输出将是“>”。什么是混乱…:(
$(rteName).find('body').html('<img src="http://www.example.com/" alt="...">