tinymce 3.x advlink插件 - 默认设置链接在新窗口/选项卡中打开

时间:2018-02-15 16:26:17

标签: tinymce tinymce-plugins tinymce-3

使用advlink插件," target"的默认值是" _self" (即链接在同一窗口/标签中打开)。我怎样才能使链接默认在新窗口/标签中打开?

1 个答案:

答案 0 :(得分:0)

我们需要在位于advlink.js的{​​{1}}文件中进行以下更改。

找到以下部分:

[yourTinymcePluginsDirectory]/advlink/js/advlink.js

我们需要更改选项的顺序。所以只需将“_blank”选项放在最上面:

    function getTargetListHTML(elm_id, target_form_element) {

        var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
        var html = '';

        html += '<select id="' + elm_id + '" name="' + elm_id + '" onchange="this.form.' + target_form_element + '.value=';
        html += 'this.options[this.selectedIndex].value;">';
        html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
        html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
        html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
        html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';

瞧,就是这样。是吗?不!

虽然这确实有效,但如果我们尝试将链接的目标更改回 html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>'; html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>'; html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>'; html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>'; ,虽然HTML确实会正确更新,但下拉列表会错误地将_self选项显示为已选中。发生这种情况是因为在选择_blank选项时,_self Tinymce属性未更新为target,而是更新为“” - 因此为空字符串。因此,当选择_self脚本将尝试查找名为“”的属性时,当然会找不到,因此默认情况下会选择第一个选项。虽然这在第一个选项为_self时有效,但当_self不是第一个选项时,它将无效。

要解决此问题,我们需要告诉脚本当目标Tinymce属性设置为空字符串时,它应该查找名为_self的属性。这样,即使它不是第一个选项,它也能够找到它。

为了实现这一点,我们还需要对脚本的行为进行一次更改。找到以下行:

_self

并将其替换为:

selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);

现在一切都应该完美, var target_value = inst.dom.getAttrib(elm, 'target'); if (inst.dom.getAttrib(elm, 'target') == ""){ target_value = "_self"; }//end if selectByValue(formObj, 'targetlist', target_value, true); 是默认目标选项。