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); });
相关推荐
通过proxy函数封装的window.name跨域技术,可以在a.html页面上访问到b.html页面的数据,即便它们运行在不同的域下。在该案例中,通过创建一个iframe来加载目标页面,并在加载完成后,将iframe重定向到同源页面,从而...
为了简化跨域通信的过程,作者将跨域通信的逻辑抽象化,封装成了一个名为`jcrossdomain.js`的JavaScript插件。该插件使用`postMessage`和`window.name`方法来实现不同源间的双向通信。插件提供了两种模式:父窗口...
5. **XDMessage.js**: 这可能是实现跨域iframe通信的一个库,它可能封装了`postMessage`和事件监听,提供更方便的API供开发者使用。具体用法需要查看源码或文档。 6. ** CORS(Cross-Origin Resource Sharing)**: ...
3. **window.name**:在跨域场景下,可以通过设置`window.name`属性实现数据的持久化存储,因为即使页面刷新,`window.name`的值也会保留。 ### 四、优化策略 1. **延迟加载**:使用`IntersectionObserver` API或`...
- **使用 jQuery**:jQuery 的 `$` 函数可以用来封装这个过程,例如,`$(window.frames["iframeSon"].document)` 将选取 iframe 中的所有文本输入框:`$(window.frames["iframeSon"].document).find(":text")`。...
接着,在JS中通过`window.webkit.messageHandlers.callFromJS.postMessage`来发送消息给iOS: ```javascript function callNativeFunction() { window.webkit.messageHandlers.callFromJS.postMessage("Hello, ...
window.frames[0].document.write("<html><body>由于跨域限制,无法正常显示该页面。</body></html>"); window.frames[0].document.close(); } } // --> ``` 这段代码检查了新窗口是否成功加载,并在出现跨域...
基于这一点,可以在一个跨域的iframe里加载数据页,然后通过设置window.name为需要传递的数据。由于window.name的值在不同页面间共享,所以可以在主页面中直接获取这个值。通常为了实现数据的传递,主页面会在iframe...
在本文的例子中,FrameMessage.js文件用于封装跨域通讯的JavaScript代码,而FrameMessage.class.php文件用于处理跨域请求并返回相应的JS代码。 - FrameMessage.js 文件中定义了FrameMessage类,该类封装了通讯的基本...
3. `name`:为iframe定义一个名称,便于通过name属性引用。 4. `src`:设定iframe中加载的页面URL。 5. `scrolling`:控制是否显示滚动条,可设为`yes`, `no`, 或 `auto`。 6. `sandbox`:用于设置安全限制,包含一...
- **跨域问题**:当涉及跨域请求时,需要注意CORS(跨源资源共享)策略,确保服务器端正确设置响应头。 - **性能优化**:对于大量查询参数的处理,可以考虑缓存查询结果,避免频繁调用正则匹配等耗时操作。 通过...
同时,JavaScript可以通过`window.flaName.methodName`来调用FLEX中的公开方法。这种交互方式使得动态更新、事件处理等复杂功能得以实现,增强了网页的动态性和互动性。 接下来,我们讨论Google插件IFrame的使用。...
利用postMessage实现跨域请求的步骤通常是这样的:首先在目标域创建一个iframe,然后在iframe加载完成之后通过postMessage发送消息,接收数据的一方在window对象上绑定了message事件,监听并接收消息,然后处理这些...
本文将详细介绍如何使用原生JavaScript封装一个简单的Ajax方法。 首先,我们要了解Ajax的核心是XMLHttpRequest对象,它提供了与服务器异步通信的能力。在非IE6浏览器中,我们直接创建`XMLHttpRequest`对象;而在IE6...
有些开发者可能会选择使用jQuery或者其他JavaScript库提供的插件,这些插件已经封装了跨域高度自适应的逻辑,如`jquery.iframe-auto-height`等,使得实现过程更为简便。 总结来说,解决iframe跨域高度自适应问题的...
而在JavaScript中需要通过`var name`进行定义。 3. **变量输出**:PHP中使用`echo`输出变量,而JavaScript中则使用`alert()`来弹出提示框显示变量内容。 4. **取消标签的默认行为**:在HTML中,可以使用`javascript:...
- `name`:为iframe提供一个名称,方便通过`window.frames`对象进行操作。 - `sandbox`:开启安全模式,限制iframe加载的内容可以执行的脚本和行为。 - `frameborder`:控制iframe边框的显示,通常设为`0`以去除边框...
AJAX是异步JavaScript和XML的简称,JQuery对原生JavaScript的AJAX功能进行了封装,提供了更加简洁的API。例如: ```javascript $.ajax({ url: 'server.php', type: 'GET', data: { name: 'John', time: '2pm' }, ...
在Node.js服务器端,处理文件上传后,将返回的文件路径封装成消息,并使用`writeHead`和`write`发送给IFrame: ```javascript var fname = req.files.fileUp.path.replace("publicfiles", "").replace("public/...