点击容器元素Alias /blog /path/to/blog/outside/root
时,需要关注输入字段RewriteRule ^/blog(.*)$ /path/to/blog/outside/root$1 [L]
,除非该元素内的文本是(通过双击或鼠标选择突出显示)
#chatInput
答案 0 :(得分:0)
答案 1 :(得分:0)
您可能需要考虑以下解决方案,该解决方案会检查点击事件后text
元素中是否选择了某些文字:
$('#text').click(function () {
var container = this;
setTimeout(function () {
var selectedElement = null;
var selectedText = null;
if (window.getSelection) {
// For modern browsers
var selection = window.getSelection();
if (selection) {
selectedText = selection.toString();
if (selection.anchorNode) {
selectedElement = selection.anchorNode.parentNode;
}
}
}
else if (document.selection && document.selection.type === "Text") {
// For IE < 9
var selection = document.selection;
selectedText = selection.createRange().text;
}
if (!(selectedText && selectedText.length > 0) || (selectedElement !== container && !$(container).has(selectedElement))) {
setTimeout(function () { $('#chatInput').focus(); }, 0);
}
}, 0);
});
根据我的测试,它适用于IE(包括IE7),Firefox和Chrome。唯一的例外是IE中的双击,它不会选择文本。您可以在此jsfiddle中看到结果。
对setTimeout
的调用可确保所有选择处理都已完成,尤其是在单击所选文本以取消选择时。
致谢:
我使用了Eineki在How can I get the element in which highlighted text is in?中提出的方法来检查text
元素是否包含所选文本。
用于处理IE中的选择的代码&lt;在Tim Down回复帖子Get the Highlighted/Selected text时发现了9。