一般来说如果我从http://abc.com/about.html把下面一段带有相对路径的文字粘贴到一个富文本编辑器
xx<a href="help.html">help</a>
应当自动转换为如下形式
xx<a href="http://abc.com/help.html">help</a>
这样里面的相对路径链接才不会失效,但是发现tinyMCE在ie下面却不会自动转换。以为其他网站也会这样,但是试了一下sina博客的编辑器却没有这个问题,看来应该是tinyMCE本身的问题。
查了许久,发现tinyMCE即使不传document_base_url这个参数也会自作聪明的加一个<base />标签,而href的值就是当前路径。从而导致ie不再自动转换粘贴内容里的相对路径,所以只要删除这个元素便可解决问题,hack如下:
(function() { tinymce.create('tinymce.plugins.bluePatch', { init : function( ed, url ) { ed.onInit.add( function( ed, cm) { var b = ed.getDoc().getElementsByTagName( 'base' )[ 0 ]; //发现直接删除会出问题,所以删除href就够了 b.removeAttribute( 'href' ); }); } }); tinymce.PluginManager.add( 'bluePatch', tinymce.plugins.bluePatch ); })();
