在内联 tinyMCE 中保留超链接导航
Preserve hyperlink navigation in inline tinyMCE
我有一个内联的 tinyMCE 编辑器,其中 HTML 文本可能包含超链接。如果用户单击超链接,我希望他们转到 URL。如果他们点击别处,我想进入编辑模式。
HTML:
<div id="tinymce">
<p>User should be able to <a id="mylink" href="http://google.com">navigate to a link</a> and also edit the text by clicking outside the link.</p>
</div>
脚本:
tinymce.init({
selector: '#tinymce',
inline: true
});
$('#mylink').on('click', function(e) {
// This never fires
console.log('Link clicked...');
});
jsfiddle: http://jsfiddle.net/rdog33/uLhdq447/
如您所见,我想挂接到超链接的点击事件并使用 window.location.href 手动将用户发送出去,但该事件没有触发。如果我取消对 tinymce 初始化的注释,它 确实 触发,所以显然 tinymce 正在以某种方式干扰。
有什么想法吗?
这里正确的方法是使用 tinymce 参数 setup
并在编辑器准备就绪时向 link 元素添加点击处理程序(使用 init
事件)。
tinymce.init({
selector: '#tinymce',
inline: true,
setup: function(editor){
editor.on('init', function(editor){
$(editor.getBody()).find('#mylink').on('click', function(e) {
// This never fires
console.log('Link clicked...');
});
});
}
});
Thariama 的回答几乎是正确的 - 感谢您让我走上正轨。下面是我的最终代码:
tinymce.init({
selector: '#tinymce',
inline: true,
setup: function(editor){
editor.on('init', function() {
$(editor.getBody()).on('click', 'a[href]', function(e) {
window.location.href = $(e.currentTarget).attr('href');
});
}
});
- 修复了 'editor' 作为参数使用两次的语法错误
- 更改事件处理以适用于所有超链接,即使内容被用户替换时也是如此
- 为超链接添加了导航
我有一个内联的 tinyMCE 编辑器,其中 HTML 文本可能包含超链接。如果用户单击超链接,我希望他们转到 URL。如果他们点击别处,我想进入编辑模式。
HTML:
<div id="tinymce">
<p>User should be able to <a id="mylink" href="http://google.com">navigate to a link</a> and also edit the text by clicking outside the link.</p>
</div>
脚本:
tinymce.init({
selector: '#tinymce',
inline: true
});
$('#mylink').on('click', function(e) {
// This never fires
console.log('Link clicked...');
});
jsfiddle: http://jsfiddle.net/rdog33/uLhdq447/
如您所见,我想挂接到超链接的点击事件并使用 window.location.href 手动将用户发送出去,但该事件没有触发。如果我取消对 tinymce 初始化的注释,它 确实 触发,所以显然 tinymce 正在以某种方式干扰。
有什么想法吗?
这里正确的方法是使用 tinymce 参数 setup
并在编辑器准备就绪时向 link 元素添加点击处理程序(使用 init
事件)。
tinymce.init({
selector: '#tinymce',
inline: true,
setup: function(editor){
editor.on('init', function(editor){
$(editor.getBody()).find('#mylink').on('click', function(e) {
// This never fires
console.log('Link clicked...');
});
});
}
});
Thariama 的回答几乎是正确的 - 感谢您让我走上正轨。下面是我的最终代码:
tinymce.init({
selector: '#tinymce',
inline: true,
setup: function(editor){
editor.on('init', function() {
$(editor.getBody()).on('click', 'a[href]', function(e) {
window.location.href = $(e.currentTarget).attr('href');
});
}
});
- 修复了 'editor' 作为参数使用两次的语法错误
- 更改事件处理以适用于所有超链接,即使内容被用户替换时也是如此
- 为超链接添加了导航