关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用
这两天客户的需求不能定下来,做闲人好长时间了,不如来整理下最近碰到的一些个小麻烦。
正题:
场景一、
最近在开发的过程中使用到了百度的富客户端文本编辑器(ueditor)---这是一款功能很强大的文本编辑器,
现在需求:当在这个页面打开以后需要把用户上次编辑的信息写回到此文本编辑器中去,这里使用的方法是ueditor给定的方法。同时使用iframe对此编辑器进行了页面嵌套的显示。
//将html代码展示到编辑器中。
function insertHtml(value) {
setContent("");
UE.getEditor('newsContent').execCommand('insertHtml', value)
}
//获得编辑器的HTML代码。
function getContent() {
return UE.getEditor('newsContent').getContent();
}
//设置编辑器内容,非html形式用于设置编辑器为null,也可以使用insertHtml("");
function setContent(isAppendTo) {
UE.getEditor('newsContent').setContent(isAppendTo);
}
获取与写入编辑器内容方法
当我在单前页面直接使用setContent(data)进行数据写入的时候发现当页面刷新完成以后并不是每一次都能成功的写入到文本编辑器中去,那么问题来了,为什么不会每次都能成功,经过调试发现没有报出任何错误。。。。试了一些办法,后来发现当页面加载的时候并不能直接使用iframe子页面中所定义的方法,需要在当前页面全部加载完成以后才可以调用相关的方法,在此处写入数据的时候加上setTimeout完美解决问题
setTimeout(function(){
eWebEditor.setContent(content);
},1000);
解决代码
场景二、
现在需求:我在父页面通过jquery插件colorbox打开了一个子页面(A),在这个页面上进行操作的时候因为不想继续打开新的子页面所以我在这里用的是parent.$.colorbox从父页面直接打开了一个新的colorbox(B)来替换了当前的这个子页面,当在B页面操作完成以后我需要通过在父页面设置的一个方法转换到原来由父页面打开的子页面A去。
这时我可以通用过parent获取到父页面的全部信息了,也可以实现了基本的功能,但是在浏览时下面会报出一个 SCRIPT5007: 缺少对象 的错误,代码书写的正确,A页面正常使用,B页面也能正常工作,只有在当我在B页面通过父页面方法跳转到A页面时浏览器会报出这个异常,但是可以跳转到B页面的。想了好长时间的思路也试过了好多方法都不能解决这个问题,后来发现当我发出事件时如果有停顿,也就是alert的提示框没有迅速关闭时这个错误就不会发生了,这是我就想到了setTimeout,一用果然没有再出现这种错误了。
现在还在纠结着个问题到底是为什么,,,,,
setTimeout(function(){
parent.$("#btn_upd").click();
},500);
解决代码
其实在父页面打开另外一个也页面的话当前的这个页面应该是关闭了的吧。还是说也是存在的只是显示被覆盖了,设置完setTimeout加载完成后就可以调用方法了?
关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用的更多相关文章
- html-javascript前端页面刷新重载的方法汇总
记得我在兴安得力实习要转正的时候,我领导象征性的给我出了一套测试题目,里面就有js闭包和页面刷新等题目.今天把很久之前的测试题目之一,js页面刷新的方法以及页面自动刷新跳转和返回上一页和下一页等方法总 ...
- ASP.NET页面刷新的实现方法总结
先看看ASP.NET页面刷新的实现方法: 第一: private void Button1_Click( object sender, System.EventArgs e ) { Response. ...
- 获取APP的元素信息和Activity
一.获取元素信息 (1)第一种方法是,在windows命令行中输入uiautomatorviewer.bat(前提是已配置好Android SDK环境),按回车键:等待几秒后会打开UI Automat ...
- C#调用页面中的窗体中的方法,获取窗体的元素。
页面中的窗体 <div class="div_width" style="width: 100%; height: 95%;"> <ifram ...
- javascript页面刷新的一些方法
在使用js刷新页面的时候,有时会遇到表单的重复提交问题 这时就需要一些强制刷新的办法,从网上大概搜了一下,js的刷新方法大致有以下几种, 刷新页面,不提示重新发送: window.location.r ...
- jQuery中,子页面与父页面之间的调用方法
在jQuery中, 子页面查找父页面的元素 parent.$("#元素Id") 父页面调用子页面的元素 $("#子页面iframe的Id").contents( ...
- URL跨项目调用方法,获取返回的json值,并解析
package com.mshc.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- 微信小程序调用微信登陆获取openid及用户信息 java做为服务端
转载的文章,很不错 https://blog.csdn.net/weilai_zhilu/article/details/77932630
- java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列
1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...
随机推荐
- ECSTORE验证码优化
用ecstore的朋友应该知道,ecstore的验证码超级鸡肋. 特别是字母和数字混合,根本就看不懂写的是什么? 数字还好,但是字母就别提了.而且还小. 索性就把验证码换掉.研究一下发现,ecstor ...
- em与px的区别 [ 转 ]
其实,还是不大理解,为什么1em=16px:而且,还一般要在body里面,就写清楚Fone-size=62.5%,然后再让1em=10px进行使用:那么,为什么不直接在当时定义em的时候,就直接让它等 ...
- C/C++ char和int的区别
字符字面值一般是用一对单引号来表示.char类型一般就是用字符字面值来初始化.赋值.由于char类型的是单字节长度,当给char类型的变量用字符字面值赋值时,当单引号里面的内容超过一个字节时,系统会自 ...
- GoogLeNet学习心得
转自:http://blog.csdn.net/liumaolincycle/article/details/50471289#t0 综述: http://blog.csdn.net/sunbaigu ...
- sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。
项目当中如果设计到金额类型的数据,你是否有考虑过为什么不能用float类型. 这里举个例子: DECLARE @price1 FLOAT; SET @price1 = 1; SET @price1 = ...
- 阅读记录:Learning multiple layers of representation(杂乱笔记)
典型的浅层学习结构: 传统隐马尔可夫模型(HMM).条件随机场 (CRFs).最大熵模型(Maxent).支持向量机(SVM).核回归及仅含单隐层的多层感知器(MLP)等. 局部表示,分布式表示和稀疏 ...
- 小qyvlik 先看两个视频,和 QtQuick UI 问答
http://edu.csdn.net/course/detail/1042 http://edu.csdn.net/course/detail/335 http://blog.csdn.net/qy ...
- javascript学习笔记——chrome等提示找不到“getElementsByTagName”的一种解决方法
最近学习是写了一个小网页,前台有个下拉框是通过后天的xml配置的,在写好代码后使用发现在IE9以及之前的IE浏览器都可以正常获取,但是IE10,chrome和firefox都会在获取一个标签时报get ...
- webservice的几个简单概念
1.什么是JAX-WS? http://baike.baidu.com/view/1865210.htm?fr=aladdin 2.什么是JAX-RPC? http://baike.baidu.com ...
- libeXosip2(2-3) -- eXosip2 event API
eXosip2 event API General purpose API. Data Structures struct eXosip_event Enumerations enum eXo ...