将文本插入由 Iframe 外部按钮触发的设计模式 Iframe

发布于 2024-12-22 09:47:23 字数 554 浏览 1 评论 0原文

我有一个可编辑的 iframe,当用户单击 iframe 外部的按钮时,我想在光标位置插入文本。我正在尝试使用以下代码插入文本:

function insertAtCursor(iframename, text, replaceContents) {
      if(replaceContents==null){replaceContents=false;}
      if(!replaceContents){//collapse selection:
         var sel=document.getElementById(iframename).contentWindow.getSelection()
         sel.collapseToStart()
      }
      document.getElementById(iframename).contentWindow.document.execCommand('insertHTML', false,     text);
};

我认为这是失败的,因为当我单击按钮时焦点会发生变化。但是,我不知道如何纠正这个问题。感谢您的帮助。

I have an editable iframe and I would like to insert text at the cursor location when the user clicks a button that is outside the iframe. I am trying to use the following code to insert the text:

function insertAtCursor(iframename, text, replaceContents) {
      if(replaceContents==null){replaceContents=false;}
      if(!replaceContents){//collapse selection:
         var sel=document.getElementById(iframename).contentWindow.getSelection()
         sel.collapseToStart()
      }
      document.getElementById(iframename).contentWindow.document.execCommand('insertHTML', false,     text);
};

I think that this is failing because the focus changes when I go to click the button. However, I am not sure how to correct this. Thank you for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与酒说心事 2024-12-29 09:47:23

您关于焦点转移影响代码插入的说法是正确的。

使用 jQuery 库,您可以将焦点转移回按钮单击绑定中的 iframe:

$('#button').click(function(event) {
    event.preventDefault();
    $('#iframe').focus();
    insertAtCursor('iframe', 'test-text', null);
});

在纯 JavaScript 中,在执行 insertAtCursor() 之前转移焦点,如下所示:

document.getElementById('iframe').focus()

You're correct about the focus shift affecting your code insert.

Using the jQuery library, you can shift focus back to the iframe in the button's click binding:

$('#button').click(function(event) {
    event.preventDefault();
    $('#iframe').focus();
    insertAtCursor('iframe', 'test-text', null);
});

In pure javascript, shift focus before executing insertAtCursor() like so:

document.getElementById('iframe').focus()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文