相关疑难解决方法(0)

在内容可编辑div中的光标处插入文本

我有一个令人满意的div,我需要在插入位置插入文本,

这可以在IE中轻松完成 document.selection.createRange().text = "banana"

有没有类似的方法在Firefox/Chrome中实现这一点?

(我知道这里存在一个解决方案,但它不能在contenteditable div中使用,看起来很笨拙)

谢谢!

javascript contenteditable

48
推荐指数
3
解决办法
6万
查看次数

document explorer替代document.execCommand("insertText",...),用于文本插入,可由用户撤消/重做

当用户编辑a contenteditable div,并按某些键时,我想覆盖默认行为.例如,我想在用户按ENTER时插入一个正常的换行符.我这样做document.execCommand("insertText",...)

到目前为止,这是我发现的唯一方法,使用户可以撤消重做此操作.

<div id="editor" contenteditable="true" style="white-space:pre-wrap">
Some text....
</div>

<script>
$("#editor").keydown(function(evt){
    console.log(evt.keyCode);
    if(evt.keyCode==13){
        document.execCommand("insertText",false,"\n");
        evt.preventDefault();
        evt.stopPropagation();
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

这段代码适用于chrome和firefox.但是,即不支持"inserttext".是否有办法插入文本,即用户可以撤消它?

javascript internet-explorer contenteditable undo-redo

11
推荐指数
1
解决办法
5588
查看次数

在iframe内部更改的下拉列表中的当前光标位置插入文本

我使用的是Microsoft ajax-toolkit提供的文本编辑器.
iframe在浏览器上呈现.我在该编辑器中添加了一个下拉列表,我希望当用户更改下拉索引时,应在编辑器当前光标位置添加该值.

我在SO上得到了一个代码,它给出了编辑器当前所选文本如下

function getIframeSelectionText(iframe) {
        var win = iframe.contentWindow;
        var doc = iframe.contentDocument || win.document;

        if (win.getSelection) {
            return win.getSelection().toString();

        } else if (doc.selection && doc.selection.createRange) {
            return doc.selection.createRange().text;
        }
 }
Run Code Online (Sandbox Code Playgroud)

但我想在当前位置添加一些文字.html呈现如下

<td class="ajax__htmleditor_editor_editpanel"><div id="Editor1_ctl02" style="height:100%;width:100%;">
            <iframe id="Editor1_ctl02_ctl00" name="Editor1_ctl02_ctl00" marginheight="0" marginwidth="0" frameborder="0" style="height:100%;width:100%;display:none;border-width:0px;">

            </iframe><textarea id="Editor1_ctl02_ctl01" class="ajax__htmleditor_htmlpanel_default" style="height:100%;width:100%;display:none;"></textarea><iframe id="Editor1_ctl02_ctl02" name="Editor1_ctl02_ctl02" marginheight="0" marginwidth="0" frameborder="0" style="height:100%;width:100%;display:none;border-width:0px;">

            </iframe>
        </div></td>
Run Code Online (Sandbox Code Playgroud)

我正在尝试如下

$("#imgDropdown").change(function () {
            //var iframeBody =    $(window.Editor1_ctl02_ctl00.document.getElementsByTagName("body")[0]);
            var iframe = document.getElementById("Editor1_ctl02_ctl00");
            $("#Editor1_ctl02_ctl00").find("body").insertAtCaret("value");
            //alert(getIframeSelectionText(iframe));
        });
Run Code Online (Sandbox Code Playgroud)

插入文本的功能不起作用iframe如下

$.fn.extend({
        insertAtCaret: function …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery html-editor

11
推荐指数
1
解决办法
1586
查看次数

避免ie contentEditable元素在Enter键上创建段落

在InternetExplorer上,<p></p>每次按Enter键时,contentEditable DIV都会创建一个新段落(),而Firefox会创建一个<br/>标记.是否可以强制IE插入<br/>而不是新段落?

html contenteditable

10
推荐指数
3
解决办法
1万
查看次数

可信的div中的HTML5可拖动元素 - 在第一次掉落后停止工作 - 为什么?

我正在尝试创建一些可拖动的元素(标记),可以在一个可疑的div内拖动.似乎一切都在工作,除了......在我拖动一个元素然后放下它之后,我再也无法拖动它了.似乎我再也无法绑定它的dragstart事件了.

知道为什么会这样,我该如何解决?

这是我小提琴的链接:http://jsfiddle.net/gXScu/1/

HTML:

<div id="editor" contenteditable="true">
    Testime siinkohal seda, et kuidas<br />
    on võimalik asja testida.
    <span class="draggable" draggable="true" contenteditable="false">Token</span>
</div>
<span class="draggable" draggable="true" contenteditable="false">Token 2</span>
Run Code Online (Sandbox Code Playgroud)

Javascript(jQuery)

var bindDraggables = function() {
    console.log('binding draggables', $('.draggable').length);
    $('.draggable').off('dragstart').on('dragstart', function(e) {
        if (!e.target.id)
            e.target.id = (new Date()).getTime();
        e.originalEvent.dataTransfer.setData('text/html', e.target.outerHTML);
        console.log('started dragging');
        $(e.target).addClass('dragged');
    }).on('click', function() {
        console.log('there was a click');
    });
}

$('#editor').on('dragover', function (e) {
    e.preventDefault();
    return false;
});

$('#editor').on('drop', function(e) {
    e.preventDefault();
    var e = e.originalEvent;
    var content …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 draggable contenteditable

10
推荐指数
1
解决办法
7658
查看次数

在Javascript contenteditable div中插入文本

我有一个问题,我需要在div中插入一个文本(字符串,可能有也可能没有html标签).它必须是一个div而不是textarea.

反正有吗?首先,我需要获取光标位置,然后将文本插入该位置.

它类似于函数insertAdjacentText,但它只能在标记之前或之后插入,并且只能在IE中使用.

请参阅此URL:http://yart.com.au/test/iframe.aspx.注意如何将光标定位在div中,我们需要在光标位置添加文本.

javascript cursor contenteditable

9
推荐指数
2
解决办法
1万
查看次数

如何在按下按钮时使元素不会失去焦点?

我有一个textarea,我在插入符号的位置插入内容(感谢Tim Down的回答).它在用户按下按钮时插入内容.但似乎按下按钮时,文本区域的焦点就会丢失.如何保持焦点在那里,提供插入符的位置也是一样的?我正沿着使用的线路思考evt.preventDefault().focusout().如果这有帮助.

html javascript jquery focus selection

9
推荐指数
2
解决办法
2万
查看次数

Internet Explorer中的execCommand("insertHTML",...)

我正在使用可编辑的iframe构建一个所见即所得的编辑器document.execCommand().现在我需要使用"insertHTML"在Chrome和Firefox中完美运行的命令,但当然它在Internet Explorer中不起作用:

function run() {
  document.getElementById("target").focus();
  document.execCommand("insertHTML", false, "<b>ins</b>");
}
Run Code Online (Sandbox Code Playgroud)
<div contenteditable id="target">contenteditable</div>
<button onclick="run()">contenteditable.focus() + document.execCommand("insertHTML", false, "&lt;b>ins&lt;/b>")</button>
Run Code Online (Sandbox Code Playgroud)

这个问题的标准解决方案是什么?没关系,如果它只适用于IE8,但IE7支持也会很好.

javascript internet-explorer internet-explorer-8

8
推荐指数
1
解决办法
2万
查看次数

如何知道所选文本是否在特定div中

我有两个div,如下所示:

<div id="div1">
<p>something</p>
<div><table><tr><td>Div1</td></tr></table></div>
</div>
<div id="div2">
<p>something else</p>
<div><table><tr><td>Div2</td></tr></table></div>
</div>
<button type="button">Check</button>
Run Code Online (Sandbox Code Playgroud)

现在,我想知道何时选择某些文本,然后按下按钮,如果所选文本在"div1"下面.我怎样才能做到这一点?

编辑:解决方案必须在IE-7及更高版本中工作.

html javascript dom

7
推荐指数
1
解决办法
6519
查看次数

Contenteditable显示最后插入的html元素

我使用一个contenteditable div作为输入字段来键入一些文本,并通过该文本中的按钮(小html图片)插入图标.

只要文本比可满足的字段更窄,就可以了.

一旦文本比字段长(因此它部分隐藏):

当我输入一个文字字符时,一切都很好,按下键后会自动显示最后一个字符,这样你就可以随时看到你输入的内容了.但是当我通过按钮输入一个图标时,图标就可以了,但它是隐藏的,因为字段内容不会移动以使新输入的图标可见,直到我输入另一个文本字符.

对此的任何解决方案,以便输入的最后一个元素(文本或html)始终对用户可见?

function pasteIcon(html) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      var el = document.createElement("div");
      el.innerHTML = html;
      var frag = document.createDocumentFragment(),
        node, lastNode;
      while ((node = el.firstChild)) {
        lastNode = frag.appendChild(node);
      }
      range.insertNode(frag);
      if (lastNode) {
        range = range.cloneRange();
        range.setStartAfter(lastNode);
        range.collapse(true);
        sel.removeAllRanges();
        sel.addRange(range);
      }
    }
  } else if (document.selection && document.selection.type != "Control") {
    document.selection.createRange().pasteIcon(html);
  }
}

$(document).ready(function() {
  $('.buttOn').click(function() {
    $('.contEd').focus();
    pasteIcon('<img …
Run Code Online (Sandbox Code Playgroud)

html css jquery contenteditable

7
推荐指数
1
解决办法
385
查看次数