`

JS window.name跨域封装

阅读更多
function CrossDomainName(target, agent, callback, security) {
	if (typeof target !== 'string' || typeof agent !== 'string' || typeof callback !== 'function') {
		throw '参数错误';
	}
	this.state = 0;
	this.target = target;
	this.agent = agent;
	this.callback = callback || Function;
	this.security = security || true;
	this.iframe = document.createElement('iframe');
	var self = this;
	function onload() {
		if (self.state === 1) {
			var data = self.iframe.contentWindow.name;
			self.callback.call(self.iframe, data);
			if (self) {
				self.iframe.contentWindow.document.close();//关闭文档流
				self.iframe.contentWindow.close();//关闭Iframe
				document.body.removeChild(self.iframe);//移除Iframe
			}
		} else if (self.state === 0) {
			self.state = 1;
			self.iframe.contentWindow.location = self.agent;
		}
	}
	if (document.attachEvent) {
		this.iframe.attachEvent('onload', onload);
	} else if (document.addEventListener) {
		this.iframe.addEventListener('load', onload, false);
	} else {
		this.iframe.onload = onload;
	}
	this.iframe.src = this.target;
	document.body.appendChild(this.iframe);
}
//调用
new CrossDomainName('http://www.kingwell.com/kingwell.html', 'http://name.b.com/adfas.html', function (data) {
	alert(data);
});

 

分享到:
评论

相关推荐

    windowName跨域详解.pdf

    通过proxy函数封装的window.name跨域技术,可以在a.html页面上访问到b.html页面的数据,即便它们运行在不同的域下。在该案例中,通过创建一个iframe来加载目标页面,并在加载完成后,将iframe重定向到同源页面,从而...

    JavaScript实现的双向跨域插件分享

    为了简化跨域通信的过程,作者将跨域通信的逻辑抽象化,封装成了一个名为`jcrossdomain.js`的JavaScript插件。该插件使用`postMessage`和`window.name`方法来实现不同源间的双向通信。插件提供了两种模式:父窗口...

    跨域iframe通讯

    5. **XDMessage.js**: 这可能是实现跨域iframe通信的一个库,它可能封装了`postMessage`和事件监听,提供更方便的API供开发者使用。具体用法需要查看源码或文档。 6. ** CORS(Cross-Origin Resource Sharing)**: ...

    Iframe交互语法

    3. **window.name**:在跨域场景下,可以通过设置`window.name`属性实现数据的持久化存储,因为即使页面刷新,`window.name`的值也会保留。 ### 四、优化策略 1. **延迟加载**:使用`IntersectionObserver` API或`...

    Jquery取得Iframe中元素的几中方法

    - **使用 jQuery**:jQuery 的 `$` 函数可以用来封装这个过程,例如,`$(window.frames["iframeSon"].document)` 将选取 iframe 中的所有文本输入框:`$(window.frames["iframeSon"].document).find(":text")`。...

    WKWebView下iOS与JS相互调用

    接着,在JS中通过`window.webkit.messageHandlers.callFromJS.postMessage`来发送消息给iOS: ```javascript function callNativeFunction() { window.webkit.messageHandlers.callFromJS.postMessage("Hello, ...

    制作Javascript弹出窗口技巧九则

    window.frames[0].document.write("<html><body>由于跨域限制,无法正常显示该页面。</body></html>"); window.frames[0].document.close(); } } // --> ``` 这段代码检查了新窗口是否成功加载,并在出现跨域...

    javascript跨域的方法汇总

    基于这一点,可以在一个跨域的iframe里加载数据页,然后通过设置window.name为需要传递的数据。由于window.name的值在不同页面间共享,所以可以在主页面中直接获取这个值。通常为了实现数据的传递,主页面会在iframe...

    php main 与 iframe 相互通讯类(js+php同域/跨域)

    在本文的例子中,FrameMessage.js文件用于封装跨域通讯的JavaScript代码,而FrameMessage.class.php文件用于处理跨域请求并返回相应的JS代码。 - FrameMessage.js 文件中定义了FrameMessage类,该类封装了通讯的基本...

    Iframe的相关介绍.docx

    3. `name`:为iframe定义一个名称,便于通过name属性引用。 4. `src`:设定iframe中加载的页面URL。 5. `scrolling`:控制是否显示滚动条,可设为`yes`, `no`, 或 `auto`。 6. `sandbox`:用于设置安全限制,包含一...

    javaScript获取浏览器参数

    - **跨域问题**:当涉及跨域请求时,需要注意CORS(跨源资源共享)策略,确保服务器端正确设置响应头。 - **性能优化**:对于大量查询参数的处理,可以考虑缓存查询结果,避免频繁调用正则匹配等耗时操作。 通过...

    FLEX与JS数据交互,以及Google插件IFrame的使用

    同时,JavaScript可以通过`window.flaName.methodName`来调用FLEX中的公开方法。这种交互方式使得动态更新、事件处理等复杂功能得以实现,增强了网页的动态性和互动性。 接下来,我们讨论Google插件IFrame的使用。...

    js跨域请求数据的3种常用的方法

    利用postMessage实现跨域请求的步骤通常是这样的:首先在目标域创建一个iframe,然后在iframe加载完成之后通过postMessage发送消息,接收数据的一方在window对象上绑定了message事件,监听并接收消息,然后处理这些...

    原生js封装的ajax方法示例

    本文将详细介绍如何使用原生JavaScript封装一个简单的Ajax方法。 首先,我们要了解Ajax的核心是XMLHttpRequest对象,它提供了与服务器异步通信的能力。在非IE6浏览器中,我们直接创建`XMLHttpRequest`对象;而在IE6...

    如何设置iframe高度自适应在跨域情况下的可用方法

    有些开发者可能会选择使用jQuery或者其他JavaScript库提供的插件,这些插件已经封装了跨域高度自适应的逻辑,如`jquery.iframe-auto-height`等,使得实现过程更为简便。 总结来说,解决iframe跨域高度自适应问题的...

    HTML中使用iframe嵌入其他界面,增加页面的灵活性、可嵌入性.zip

    - `name`:为iframe提供一个名称,方便通过`window.frames`对象进行操作。 - `sandbox`:开启安全模式,限制iframe加载的内容可以执行的脚本和行为。 - `frameborder`:控制iframe边框的显示,通常设为`0`以去除边框...

    JQuery教程.pdf

    AJAX是异步JavaScript和XML的简称,JQuery对原生JavaScript的AJAX功能进行了封装,提供了更加简洁的API。例如: ```javascript $.ajax({ url: 'server.php', type: 'GET', data: { name: 'John', time: '2pm' }, ...

    通过隐藏iframe实现无刷新上传文件操作

    在Node.js服务器端,处理文件上传后,将返回的文件路径封装成消息,并使用`writeHead`和`write`发送给IFrame: ```javascript var fname = req.files.fileUp.path.replace("publicfiles", "").replace("public/...

Global site tag (gtag.js) - Google Analytics