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



使用advlink插件,"目标"为" _ self"的默认值(即在同一窗口/tab中链接打开(。我该如何做到这一点,以便默认情况下在新窗口/选项卡中打开链接?

我们需要在[yourTinymcePluginsDirectory]/advlink/js/advlink.js中的文件advlink.js中进行以下更改。

找到以下部分:

    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>';

我们需要更改选项的顺序。因此,只需将" _blank"选项放在顶部:

        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>';

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

尽管这确实可以正常工作,但是如果我们尝试将链接的目标更改回_self,尽管HTML确实会正确更新,但下拉列表将错误地显示为所选的_blank选项。发生这种情况是因为当选择_self选项时,target Tinymce属性未更新为_self,而是更新为" - 因此一个空字符串。因此,选择_self时,脚本将尝试寻找一个名为"的属性,当然会找到一个,因此默认情况下会选择第一个选项。虽然当第一个选项为 _self时,但在_self不是第一个选项时它将不起作用。

要解决这个问题,我们需要告诉脚本,当目标tinymce属性设置为空字符串时,它应该寻找名为 _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);

现在一切都应该完美地工作, _blank是默认目标选项。

相关内容

  • 没有找到相关文章

最新更新