2017-08-10 154 views
1
<div class="voc_container content-container"> 
<div class="voc_content"> 
    <h3 class="heading-small">Tell us what you think of this page</h3> 
    <span class="voc_content_open">Take a short survey to give us your feedback</span> 
    <span class="voc_content_close js-hidden">Close</span> 
    <div class="voc_content_survey js-hidden"> 
    <script id="ss-embed-380173"> 
    (function (d, w) { 
    var s, ss; 
    ss = d.createElement('script'); 
    ss.type = 'text/javascript'; 
    ss.async = true; 
    ss.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + 
'www.xxxxxx.co.uk/s/r/embed.aspx?i=341674&c=380173'; 
}; 
    s = d.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ss, 
s); })(document, window);</script></div> 
</div> 
</div>**strong text** 

其生成HTML作爲如何從動態生成的iframe中刪除onload事件?

<iframe id="ss-embed-frame-380173" 
src="https://www.xxxxxxx.co.uk/s/YEXFX/" frameborder="0" style="border: 
0px currentColor; border-image: none; width: 100%; height: 400px; padding- 
bottom: 4px;" onload="window.scrollTo(0, document.getElementById('ss-embed- 
frame-380173').offsetTop);">&lt;a 
href="https://www.xxxxxxx.co.uk/s/YEXFX/"&gt;Please take our 
survey&lt;/a&gt;</iframe> 

我試圖使用的createElement以除去聽者

ss.removeEventListener("onload","window.scrollTo(0, 
    document.getElementById('ss-embed-frame-380173').offsetTop);"); 
ss.onload=function(){} 

從動態生成的事件刪除onload事件,但它不是去除。

任何人都可以幫助我指導如何從動態生成的iframe元素中刪除onload事件?

onload="window.scrollTo(0, document.getElementById('ss-embed- 
frame-380173').offsetTop); 

回答

0

可以使用MutationObserver觀察元件被附加到document,在元件上調用.removeAttribute("onload")如果id或其他選擇器匹配時,.disconnect()觀察者實例

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script> 
 
const config = { 
 
    childList: true, 
 
    subtree: true 
 
}; 
 

 
const observer = new MutationObserver(function(mutations) { 
 
    mutations.forEach(function(mutation) { 
 
    mutation.addedNodes.forEach(function(node) { 
 
     if (new RegExp("^ss-embed-frame").test(node.id)) { 
 
     node.removeAttribute("onload"); 
 
     observer.disconnect(); 
 
     console.log(node.getAttribute("onload"), node.outerHTML); 
 
     } 
 
    }) 
 
    }) 
 
}) 
 

 
observer.observe(document.documentElement, config); 
 
</script> 
 
<script> 
 
let iframe = `<iframe id="ss-embed-frame-380173" 
 
src="data:text/plain,abc" frameborder="0" style="border: 
 
0px currentColor; border-image: none; width: 100%; height: 400px; padding- 
 
bottom: 4px;" onload="window.scrollTo(0, document.getElementById('ss-embed- 
 
frame-380173').offsetTop);">&lt;a 
 
href="https://www.xxxxxxx.co.uk/s/YEXFX/"&gt;Please take our 
 
survey&lt;/a&gt;</iframe>`; 
 

 
onload = function() { 
 
    document.body.innerHTML += iframe 
 
}; 
 
</script> 
 
</head> 
 
<body> 
 
</body> 
 
</html>

0

你可以使用jQuery。

<script type="text/javascript"> 
    $("#ss-embed-frame-380173").removeAttr("onload"); 
</script>