获取最底层iframe页面中鼠标点击的坐标

本文介绍了一个在多层iframe嵌套环境中获取最底层iframe页面中鼠标点击的XY坐标的JavaScript函数,适用于IE浏览器。

多层iframe嵌套的时候,取最底层iframe页面鼠标点击的XY坐标,

IE下测试通过~

 

/**
 * 获取最底层iframe页面中鼠标点击的位置
 */
function getPosition_Iframe(){
	var parentWindow = window.parent;
	var tmpLocation = window.location;
	var target = null;
	var left=0;
	var top=0;
	while(parentWindow!=null && typeof(parentWindow)!='undefined' && tmpLocation!=parentWindow.location){
		for(var x=0;x< parentWindow.frames.length;x++){
			if(tmpLocation == parentWindow.frames[x].location){
				target = parentWindow.frames[x].frameElement;
				break;
			}
		}
		do {
			left += target.offsetLeft - target.scrollLeft|| 0;
			top += target.offsetTop - target.scrollTop || 0;
			target = target.offsetParent;
		 } while(target);
		tmpLocation=parentWindow.location;
		parentWindow = parentWindow.parent;
	}
	return {x:left+window.event.clientX,y:top+window.event.clientY};
}

 

虽然提供的引用未直接提及在页面点击 iframe 中元素的方法,但可以基于一般的前端知识给出实现思路。要在页面点击 iframe 中的元素,可通过以下步骤实现: ### 1. 确保跨域问题处理 如果主页面iframe 页面来自不同的域名,会存在跨域问题,浏览器出于安全考虑会限制操作。只有当主页面iframe 页面同源(即协议、域名、端口都相同)时,才能进行后续的交互操作。 ### 2. 获取 iframe 元素 在主页面的 JavaScript 代码中,使用 `document.getElementById` 或者其他选择器方法获取iframe 元素。示例代码如下: ```javascript const iframe = document.getElementById('yourIframeId'); ``` ### 3. 等待 iframe 加载完成 由于 iframe 是异步加载的,需要确保 iframe 加载完成后再进行操作。可以通过监听 `load` 事件来实现。示例代码如下: ```javascript iframe.addEventListener('load', function() { // 在这里进行点击操作 }); ``` ### 4. 获取 iframe 中的文档对象 使用 `contentDocument` 属性获取 iframe 中的文档对象。示例代码如下: ```javascript const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; ``` ### 5. 查找并点击目标元素 使用 `querySelector` 或者其他选择器方法在 iframe 的文档对象中查找目标元素,并模拟点击操作。示例代码如下: ```javascript const targetElement = iframeDoc.querySelector('#targetElementId'); if (targetElement) { targetElement.click(); } ``` 完整的示例代码如下: ```javascript const iframe = document.getElementById('yourIframeId'); iframe.addEventListener('load', function() { const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; const targetElement = iframeDoc.querySelector('#targetElementId'); if (targetElement) { targetElement.click(); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值