为什么选择范围和弹出窗口不能在javascript中一起工作
why select range and popup window can not work together in javascript?
我使用这个html结构来弹出一个新窗口,并选择预标记中的所有内容:
<a href="#" onclick="popup(this)">Open Ppup</a>
<a class="selectable" href='javascript:fnSelect("a1")'>[Select All Code]</a>
<pre class="CodeBlock linenums" id="a1">
line 1<br />
line 2<br />
line 3
</pre>
<a href="#" onclick="popup(this)">Open Popup</a>
<a class="selectable" href='javascript:fnSelect("a2")'>[Select All Code]</a>
<pre class="CodeBlock linenums" id="a2">
line 4<br />
line 5<br />
line 6
</pre>
弹出窗口的js:
function popup(obj)
{
var myHtml = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"> <title>Popup</title></head><body>' +
$(obj).next('.CodeBlock').html() +
'</body></html>';
var generator = window.open('','name','height=400,width=500');
generator.document.body.innerHTML = myHtml;
}
以及用于选择的js:
function fnSelect(objId) {
fnDeSelect();
if (document.selection) {
var range = document.body.createTextRange();
range.moveToElementText(document.getElementById(objId));
range.select();
}
else if (window.getSelection) {
var range = document.createRange();
range.selectNode(document.getElementById(objId));
window.getSelection().addRange(range);
}
}
function fnDeSelect() {
if (document.selection) document.selection.empty();
else if (window.getSelection)
window.getSelection().removeAllRanges();
}
似乎两个锚点在html中不能在一起。如果放在一起,弹出窗口就不再工作了(至少它给了我未定义的作为内容)。如果我用[Select All Code]跳过锚点,弹出窗口工作正常。看看这把小提琴:http://jsfiddle.net/Ax8Hz/47/
我的问题是:当另一个锚点(SelectAllCode)也在html中时,为什么弹出窗口不再工作?如何解决此问题?
试试这个:
function popup(obj)
{
var myHtml = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Popup</title></head><body>' +
$(obj).nextAll('.CodeBlock').first().html() +
'</body></html>';
var generator = window.open('','name','height=400,width=500');
generator.document.body.innerHTML = myHtml;
}
.next()
查看下一个元素,而不是该类的下一个元件,因此使用nextAll
和first()
本质上做相同的事情
相关文章:
- 如何将索引数据库与 Metrostyle Javascript 一起使用
- 如何将html中select选项的输入与javascript一起使用
- 与javascript一起使用RequiredFieldValidator
- 如何用JavaScript中的Ajax调用代替加载脚本文件(将YQL与JavaScript一起使用)
- 防止将IE8与JAVASCRIPT一起使用
- CSS 缩放在起点和终点之间与 javascript 一起使用
- PHP和Javascript一起工作
- 如何将CSS与javascript一起使用
- 如何将 django-comments 表单与 javascript 一起使用
- 未能将加速度计与 HTML 和 JavaScript 一起使用
- 如何将PostgreSQL与JavaScript一起使用
- 在选择列表中将创建的属性与 javascript 一起使用
- HTML 不能与 JavaScript 一起使用
- 如何将“display:none”与jquery或javascript一起使用
- 如何将pubnub密钥与Corona和Javascript一起使用
- HTML5与javascript一起解析和显示文本文件
- 如何将css代码存储在与Javascript一起使用的php变量中
- 将可变thisarg或上下文与javascript一起使用有什么危险
- Html生成的JavaScript无法与其他JavaScript一起使用
- 与外部javascript一起传递的php脚本不起作用