问题描述
对于一个副项目,我正在构建一个扩展,当光标悬停在它上面时,它会提供任何链接的 iframe 预览。 hovering over a link at the top of a page 时一切正常,但页面向下滚动时出现问题。由于某种原因,iframe 将自身向上移动到预期位置: like this
我使用了鼠标悬停功能并使用了 e.pageX 和 e.pageY 并将该位置应用到 iframe 使用 iframe.style.top = e.pageY + 'px' 和 iframe.style.left = e.pageX +'px'。
// document.getElementById('activate').onclick = function (){
// }
var MOUSE_VISITED_CLASSNAME = 'crx_mouse_visited';
var prevDOM = null;
var iframe = document.createElement('iframe');
var p = document.createElement('p');
p.id = 'linky';
iframe.id = 'linky2'
// iframe.is="x-frame-bypass"
p.style.display = "inline-block";
past = true
function upTo(el,tagName) {
tagName = tagName.toLowerCase();
if (el.nodeName == "A") {
return el;
}
while (el && el.parentNode) {
el = el.parentNode;
if (el.tagName && el.tagName.toLowerCase() == tagName) {
return el;
}
console.log("TAG",el.tagName);
}
return null;
}
document.addEventListener('mousemove',function(e) {
console.log(e.pageX,e.pageY)
let srcElement = e.srcElement;
console.log(srcElement.result)
var x = upTo(srcElement,'A');
// if(x){
// console.log("BPOO",document.getElementById(srcElement.id));
// var x = srcElement.id;
// console.log(x);
// var el = document.getElementById(x).parentElement.nodeName;
// var link = document.getElementById(x).parentElement;
// console.log("AAA");
// console.log("ELELELLELE",el);
// }
// else{
// var el = "B";
// var link = srcElement;
// }
if (x == null && prevDOM != srcElement && srcElement.nodeName != 'SPAN' && srcElement.nodeName != 'A' && iframe != null && srcElement.nodeName != "IFRAME") {
past = true;
iframe.remove();
// p.remove();
console.log("REMOVE");
} else if (past && (srcElement.nodeName == 'A' || x != null)) {
if (prevDOM != null) {
prevDOM.classList.remove(MOUSE_VISITED_CLASSNAME);
}
srcElement.classList.add(MOUSE_VISITED_CLASSNAME);
prevDOM = srcElement;
console.info(srcElement.currentSrc);
console.log("AAAA");
console.log(srcElement.href);
var html = x.href;
console.log(html);
try {
document.body.appendChild(p);
// p.style.top = e.pageY + 'px'
// p.style.left = e.pageX + 'px'
// p.innerHTML = html;
console.log(e.pageX,e.pageY);
document.body.appendChild(iframe);
console.log("BOBO O")
console.log(e.clientX + 'px',e.clientY + 'px')
iframe.contentwindow.document.open();
iframe.contentwindow.document.write(html);
iframe.contentwindow.document.location.href = html;
iframe.contentwindow.document.close();
iframe.style.top = e.pageY + 'px'
iframe.style.left = e.pageX + 'px'
console.log("EEEEEEEEEEE",e.pageX + 'px',e.pageY + 'px');
console.log("IFRAMemmEME",iframe.style.left + 'px',iframe.style.top + 'px');
} catch (err) {
console.log("AAA");
}
past = false
console.log("BBB");
console.dir(srcElement);
}
},false);
.crx_mouse_visited {
background-clip: #bcd5eb!important;
outline: 1px dashed #e9af6e!important;
}
iframe {
width: 800px;
height: 520px;
border: 1px solid black;
}
iframe {
zoom: 0.75;
-moz-transform: scale(0.75);
-moz-transform-origin: 0 0;
}
/*
.Box{
display: none;
width: 100%;
} */
/* a:hover + .Box,.Box:hover{
display: block;
position: relative;
z-index: 100;
} */
body {
min-height: 500px;
border: 1px solib blue;
}
#cursorText {
position: absolute;
border: 1px solid blue;
}
#linky {
position: absolute;
/* padding: 100px;
background-color: black;
margin: 100px; */
}
#linky2 {
position: absolute;
background-color: white;
/* -moz-transform: scale(0.45,0.45);
-webkit-transform: scale(0.45,0.45);
-o-transform: scale(0.45,0.45);
-ms-transform: scale(0.45,0.45); */
/* transform: scale(1,1); */
/* -moz-transform-origin: top left;
-webkit-transform-origin: top left;
-o-transform-origin: top left;
-ms-transform-origin: top left;
transform-origin: top left; */
/* padding: 100px;
background-color: black;
margin: 100px; */
}
#linky3 {
position: absolute;
background-color: white;
/* padding: 100px;
background-color: black;
margin: 100px; */
}
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>PointView</title>
<script src="popup.js"></script>
<link rel="stylesheet" href="main.css">
</head>
<body>
<button id="activate">activate</button>
<a id="AAA" href="https://play.typeracer.com/">aaa</a>
<p>fdsafd </p>
<p>dsfadsfasfas</p>
<p>fdsafasf fdfas</p>
<p>fdsfsadfsadffdsaf</p>
<br><br>
<br>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<br>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<br>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<br><a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<a id="AAA" href="https://play.typeracer.com/">asdasdsadsaaaa</a>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<!-- <embed src="https://stackoverflow.com" type="text/html"/> -->
</body>
</html>
为什么会这样?? 谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)