gpt4 book ai didi

javascript - 防止 Safari 在单击按钮时丢失正文中的选定文本

转载 作者:行者123 更新时间:2023-11-29 15:52:59 25 4
gpt4 key购买 nike

我有一个应用程序,当单击父窗口中的“Say It”按钮时,它会将任何选定的正文文本传递到 text-2-speech 服务器(通过 ajax);所选文本位于 iframe 中。

该选择适用于 Firefox 3.6 和 IE 8,但不适用于 Safari 5(没有尝试过任何其他浏览器;这是我们支持的浏览器列表)。在 Safari 中,只要单击执行该功能的按钮,任何选定的文本都会丢失。

我已经尝试将它添加到演示文稿 iframe 的 mouseup 中,作为在控件中丢失选定文本的解决方案,但它不适用于文档正文中的选定文本:

$("#the_presentation").mouseup(function(e){

e.preventDefault();

});

捕获所选文本的函数是这样的:

function getSelectedText(){
//Grab selected text
var _txt = '';
var _selection = null;

if(window.getSelection){
_txt = window.getSelection().toString();
}
else if(document.getSelection){ //deprecated in ff
_txt = document.getSelection()+'';
}
else if(document.selection){
_selection = document.selection.createRange();
if(_selection != null && _selection.text )
{
_txt = _selection.text;
}
}

return _txt;
}

感谢您提供的任何见解!

*编辑:我忘了提到只发生在 Mac safari 上——windows safari 没有问题。

最佳答案

为什么不在文本选择发生任何变化时调用 getSelectedText() 并存储它直到单击按钮。

在 jQuery 中,这看起来像下面这样:

$(function(){
var currentSelectedText = '';

$(document.body).bind('keyup mouseup mousedown', function(){
currentSelectedText = getSelectedText(); //your function from above
});

$('#the_form').submit(function(){
makeAjaxCallForSpeech(currentSelectedText);
});
});

(注意:从你的问题来看,我不确定 iFrame 发生了什么。所以这个解决方案不涉及你提到的 iFrame 设置。你必须根据你的特定需求采用它。)

关于javascript - 防止 Safari 在单击按钮时丢失正文中的选定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com