javascript - 使文本可选择

标签 javascript html dynamics-crm-2011 selection

我正在使用 CRM 2011(编辑:汇总 13),并且我为功能区编写了一个小型(开发)帮助程序,该功能区在模式弹出窗口中显示当前记录的 ID (在任何较重的库上使用picoModal,以便我可以嵌入脚本)。

无论如何,CRM 中的某些内容(脚本或其他)正在阻止全局级别的文本选择,使我的弹出窗口几乎毫无用处,我已经尝试覆盖可以在弹出窗口中禁用文本选择的最明显的内容,包括设置所有内容浏览器特定-foo-user-select: text; css 属性,我重置了不可选择的属性,甚至天真地尝试将 onselectstart 事件重置为不 return false; (应该应用它,因为弹出窗口将由 picoModal 动态构建)。

picoModal(entityName + ":<div id='info-region' unselectable='off' onselectstart='return true;'  style='user-select: text; -ms-user-select: text; -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text;'><code><pre>" + str + "</pre></code></div><i>(press [CTRL]+[C] to copy the " + entityName + " entities ID to the clipboard)</i>");

除了我无法在弹出窗口中选择文本这一主要问题之外,为了简化重要数据的复制,我使用一些代码在 str 中选择相关文本。有效负载,以便可以轻松复制(我从 SO 剽窃,不再有链接,但如果您知道,请引用作者):

function selectText(entity) {
    var doc = document;
    var text = doc.getElementById(entity);

    if (document.body.createTextRange) { // ms
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if (window.getSelection) { // moz, opera, webkit
        var selection = window.getSelection();
        var range = doc.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}

该代码在测试页面(跨浏览器)中有效,但在 Internet Explorer 中上传到 CRM 2011 后,模式弹出窗口中的所有文本均不可选择,而在 Firefox 中,文本可选择,但所选范围未聚焦当它显示给用户时,所以我假设一定有某种我没有想到的限制文本选择的方法,或者我没有正确覆盖已知的方法之一。

最佳答案

您可以添加“ms-crm-Field-Data-Print”类以使文本可选。要启用整个页面的文本选择,请设置“window._UI_TEXT_SELECTABLE = "1";”在 JavaScript 中。

http://blog.customereffective.com/blog/2014/05/selectable-text-on-crm-web-resources-with-clientglobalcontext.html

关于javascript - 使文本可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788490/

相关文章:

javascript - 替换内置属性的 IE8 属性枚举(例如 `toString` )

javascript - 如何在找到键之前在 jquery 中追加数据?

javascript - 使用JavaScript从纬度和经度的小数点中删除零点

javascript - CRM 2011 RollUp 12 刷新网格

javascript - 如何使用本地存储进行事件类?

html - CANVAS 2D 上下文中的纹理

html - 如何在seam中格式化句子

javascript - 为什么我的 JS 代码没有向 HTML 页面显示消息?

dynamics-crm-2011 - 如何在 CRM 2011 中以编程方式(通过插件)获取 CRMWRPCToken 和 CRMWRPCTokenTimeStamp?

workflow - 自定义工作流如何获取执行实体