JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)


Posted in Javascript onJune 24, 2016

本文实例讲述了JS实现iframe编辑器光标位置插入内容的方法。分享给大家供大家参考,具体如下:

<html>
<iframe id="x" name="x"></iframe>
<input type="button" onclick="t()" value="test">
<input type="button" onclick="frames['x'].location.href='about:blank';" value="clear">
<script>
//setTimeout('window.frames["x"].document.designMode="On"',200);
function t(){
window.frames["x"].document.designMode="On";
var html = '<b style="color:red">'+$('xx').value+'</b>';//插入的内容(html),可以是图片。
if(getBrowser()=='ie'){
var Editor = window.frames["x"];//IE获取iframe方法,否则图片位置跑到页面顶上去了。
Editor.focus();
o=Editor.document.selection.createRange();
o.pasteHTML(html);
}else if(getBrowser()=='chrome'){
var Editor = $('x');//firefox要通过这种方式获取节点才行
Editor.focus();
//alert(Editor.contentWindow.getSelection().getRangeAt(0));
var rng = Editor.contentWindow.getSelection().getRangeAt(0);
var frg = rng.createContextualFragment(html);
rng.insertNode(frg);
}
}
//获取浏览器版本
function getBrowser(){
var agentValue = window.navigator.userAgent.toLowerCase();
if(agentValue.indexOf('msie')>0){
return "ie";
}else if(agentValue.indexOf('firefox')>0){
return "ff";
}else if(agentValue.indexOf('chrome')>0){
return "chrome";
}
}
function $(id){
return document.getElementById(id);
}
//根据元素className属性获取元素,如果有多个元素样式类名相同,可以用index指定返回第几个元素,第一个为1
function getNodeByClassName(vclassname,index){
//var allnodes = document.all;
var allnodes = document.getElementsByTagName("*");
var x = 0;
for(var i=0;i<allnodes.length;i++){
if(allnodes[i].className==vclassname){
if(index!="undefined"){
x++;
if(x<index){
continue;
}
}
return allnodes[i];
}
}
}
</script>
输入: <input id="xx">

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jQuery初学:find()方法及children方法的区别分析
Jan 31 Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
js实现登录与注册界面
Nov 01 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
详解JavaScript事件循环机制
Sep 07 Javascript
区别JavaScript函数声明与变量声明
Sep 12 Javascript
jQuery如何获取动态添加的元素
Jun 24 #Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 #Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 #Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 #Javascript
老生常谈 关于JavaScript的类的继承
Jun 24 #Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 #Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 #Javascript
You might like
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
我的论坛源代码(四)
2006/10/09 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
Laravel5中contracts详解
2015/03/02 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP如何将XML转成数组
2016/04/04 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
django文档学习之applications使用详解
2018/01/29 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
汽车队司机先进事迹材料
2014/02/01 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
八年级数学教学反思
2016/02/17 职场文书