嘿,所以我正在使用范围,我试图限制用户可以在页面上进行的选择.我的意思是用户可以选择他想要的任何东西,但选择不能超过我将设置的边界.
首先,我用定义的范围定义"边界".然后我将当前用户选择与定义的范围进行比较,如果当前选择开始低于边界或者当前选择结束高于边界,则我相应地调整,以便用户选择永远不会超出定义的边界范围/选择.
下面的函数只能工作如果我在进程启动前输出一个警报,如果我删除警报,那么firefox表现得很奇怪(比如选择页面的其他部分等)
问题是:为什么以下代码适用于警报以及为什么没有警报就无法正常工作?
谢谢!
var range = document.createRange(); // this is the boundaries range
range.selectNodeContents(document.getElementById("container"));
function test(){
alert("let's go"); // if I remove this alert, the code doesn't work as expected, WHY?!
if(window.getSelection().rangeCount == 0){
return;
}
var curRange = window.getSelection().getRangeAt(0);
if(curRange.compareBoundaryPoints(Range.START_TO_START, range) < 0){
curRange.setStart(range.startContainer,range.startOffset);
}
if(curRange.compareBoundaryPoints(Range.END_TO_END, range) > 0){
curRange.setEnd(range.endContainer,range.endOffset);
}
}
Run Code Online (Sandbox Code Playgroud) 在略读所有可能的问题和答案后,我将以这种方式尝试.
我正在编写一个RTE,但没有成功地在一个可信的元素中提取文本.原因是,每个浏览器以稍微不同的方式处理节点和按键(#13)事件(例如,一个创建'br',另一个'div','p'等等.)这一切都是一致的,我正在编写一个跨浏览器编辑器,用e.preventDefault()杀死所有默认操作;
以下场景:
1)用户点击#13键(检查)
2)检测到插入位置(检查)
3)在插入符号的元素之后创建新的p(aragraph)(检查)
4)如果插入符号和元素的结尾之间的文本(节点),提取它(???)
5)将文本(节点)放入新创建的p(aragraph)(检查)
你可以想象,除了第4点,一切都有效.
在众所周知的js rangy库中有类似的功能,正在提取特定的选择.
我需要的是:获取并提取从插入符号到可信段落(p,h1,h2,...)元素末尾的所有文本(当然还有标记,因此是splitBoundaries).
欢迎任何线索,提示或片段!提前致谢.
亲切的问候,p
我正在寻找一种方法来添加到Javascript非常特殊的非抢占式多线程形式.Mozilla的Javascript 1.7支持使用本机协同程序yield,但我不想使用特定于浏览器的解决方案.我看到有几个continuation或coroutines的实现,基于将带注释的Javascript代码转换为普通的Javascript.一些例子是StratifiedJS,Narrative Javascript和jwacs.
我不需要一个功能齐全的模拟Javascript异步调用框架; 我只是需要它来实现我想要实现的非常具体的用法.因此,上面的库对我来说太过分了.
有人能指出这种预处理器使用的基本"技巧"(或技巧)吗?是否有一些特殊的语言破解可以在Javascript中实现延续,代价是生成一些额外的代码?欢迎任何相关的参考.
javascript continuations preprocessor code-generation coroutine
我有一个图像javascript按钮,它不适用于chrome,
你能帮我提前谢谢!
这是代码:
我只是隐藏了弹出窗口:
编辑:
关闭我使用此功能只是隐藏它
function hideBulle() {
$("bullepopup").style.display="none";
hideoverlay();
}
Run Code Online (Sandbox Code Playgroud)
这是创建一个框和此按钮的代码
function showBulle(obj) {
showoverlay();
coo = $("content").getPosition();
$("bullepopup").style.width = "555px";
$("bullepopup").style.height = "555px";
$("bullepopup").position({x: (coo.x+((650-555)/2)), y: (coo.y+(440-250)/2)});
$("bullepopup").style.display="";
$("bullepopup").set('html','');
new Element('img',{src:'images/br588.gif',styles: {float:'right',cursor:'pointer'},
events: {
click: function(){
hideBulle();
}
}
}).inject($('bullepopup'));
new Element('br').inject($('bullepopup'));
new Element('div',{html:obj.get('html')}).inject($('bullepopup'));
}
function hideBulle() {
$("bullepopup").style.display="none";
hideoverlay();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
function keypressCheck() {
var keyID = event.keyCode;
//space pressed
if (keyID == 32) {
anotherFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望anotherFunction()在按下空格键时运行,而不会发生页面滚动的默认操作.有没有办法做到这一点?
当我参与我的项目时,我不小心将这个数组命名为"名字"
var name = ["abc","abc","abc","abc"];
Run Code Online (Sandbox Code Playgroud)
它在我的项目中产生了一个不一致的原因,因为正如我预期的名字[0]会产生第一个abc,HOWEVER !,它给了我第一个字母!!! 我在Firefox控制台中尝试了这个数组,它总是给我的数组而不是我从键入Chrome控制台得到的字符串.因此,我再次将该变量重命名为Chrome中的其他内容
var foo = ["abc","abc","abc","abc"];
Run Code Online (Sandbox Code Playgroud)
foo [0]给了我第一个"abc".随意尝试这个,我猜测命名"名称"有问题,但不知道为什么.谢谢
有一个div:<div contenteditable="true"></div>在IE(7,8,9)中,然后我单击一个按钮以使用该document.execCommand('insertImage')方法插入图像.然后插入图像.到现在为止没有问题.但是使用可调整大小的处理程序选择插入的图像.如何取消选择并重新聚焦图像?谢谢.
$button.click(function(){
document.execCommand("insertImage",false,'url');
});
我正在使用WYSIWYG编辑器execCommand()和我自己的拖放式javascript函数.
我希望能够找到所选文本的名称和大小(如果适用).我怎么能这样做呢?
是否有与execCommand()此相关的特定功能?
使用JS,我们如何找到是否可以键入html元素.我正在尝试将".tagName"与"INPUT"或"TEXTAREA"进行比较,但它无法区分常规输入文本/电子邮件元素和单选按钮或提交按钮.
我也试过".isContentEditable",但当元素被"继承"时,我无法区分.