可能的原因是什么document.getElementById,$("#id")或者任何其他DOM方法/ jQuery选择器没有找到元素?
示例问题包括:
.val(),.html(),.text())返回undefined返回的标准DOM方法null导致以下任何错误:
未捕获的TypeError:无法设置null的属性'...'未捕获的TypeError:无法读取null的属性'...'
最常见的形式是:
未捕获的TypeError:无法设置null的属性'onclick'
未捕获的TypeError:无法读取null的属性"addEventListener"
未捕获的TypeError:无法读取null的属性'style'
我一直在关注这个教程 - http://www.youtube.com/watch?v=R2hOvZ7bwXU,它基本上解释了如何使用postmessage在iframe和父级之间安全地传递消息 - 你基本上最终会得到这样的东西 - http://html5demos.com/postmessage2
我的问题是我需要它以相反的方式工作(子到父)并且不知道如何定位父窗口.
这是我的接收者代码(在父母中) -
function handlingMsg(e)
{alert("works")
if(e.origin == "http://uc.dialogue.net")
{
var blah = e.data;
alert(blah);
}
else{alert("error");}
}
addEventListener("message",handlingMsg, true);
Run Code Online (Sandbox Code Playgroud)
这是由简单表格(在孩子中)触发的发件人功能 -
var text=$('.srchInput').val();
window.parent.postMessage(text, "http://uc.dialogue.net");
Run Code Online (Sandbox Code Playgroud)
我应该以不同的方式定位父母吗?
干杯保罗
我iframe喜欢这个
<iframe name="myframe1" id="myframe1" width="100%" height="100%" src="a.html">
<html>
<head></head>
<frameset name="myframe2" cols="0%, 100%" border="0" frameBorder="0" frameSpacing="0">
<frame name="page1" src="c.html" scrolling="no"></frame>
<frame name="page2" src="d.html" >
<html>
<head></head>
<body id="top">
<div id="div1">
<div id="div2">
<div id="div3">
<ul id="x">
<li>a</li>
<li>b</li>
</ul>
</div>
</div>
</div>
</body>
</html>
</frame>
</frameset>
</html>
</iframe>
Run Code Online (Sandbox Code Playgroud)
我想引用元素"x".我尝试了几种方法,但我找不到解决方案.
我正在尝试制作一个css选择器,根据天气html是否在iframe中分配不同的属性.我试过这个:
html:not(:root) body {
background: black !important;
}
Run Code Online (Sandbox Code Playgroud)
我希望这适用background: black;于身体,如果它在iframe内部,但它没有,为什么?有没有css选项?如果html是root,我总是可以用javascript检查.
IE8支持不需要支持.
我需要在youtube iframe上播放一个事件.因此,当按下播放按钮时,我需要调用一个函数来隐藏span.module-strip
我试过这个但也许我走错了路?
$("#home-latest-vid")[0].onplay = function() {
alert('hi');
};
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="module module-home-video">
<span class="module-strip">Latest Product Video</span>
<iframe id="video" src="http://www.youtube.com/embed/RWeFOe2Cs4k?hd=1&rel=0&autohide=1&showinfo=0&enablejsapi=1" frameborder="0" width="640" height="360"></iframe>
</div>
Run Code Online (Sandbox Code Playgroud) 我在浏览我的问题时从SO中找到了这个示例,但我想确切地知道如何在我的场景中使用它.我有一个来自另一个域的iframe,我想检测iframe url何时从另一个域中的一个页面更改为另一个页面.所以,我想的是在打开iframe的第二页时有类似的东西:
<script type="text/javascript">
$(document).ready(function() {
parent.postMessage("Second Page");
}
</script>
Run Code Online (Sandbox Code Playgroud)
这就是我所需要的,我只需要收到iframe有不同网址的消息.现在在父页面上,我可能会有这样的事情:
<script type="text/javascript">
$(document).ready(function() {
$('#frame').load(function () {
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
// Listen to message from child window
eventer(messageEvent,function(e) {
var secondPageValue = // I want to get the value from the child page here, how can I do that?
},false);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我第一次尝试使用这个postMessage选项,所以每个建议都将非常感激.另外,我是否需要在子端包含一些JS库(如jquery)才能使其工作?
提前谢谢,Laziale
在我的 React 应用程序中,我在遍历数组后显示卡片(因此理论上可以有n卡片)。
我希望在用户单击该卡片时复制卡片中显示的文本。然而,问题是反应应用程序是在 iframe 内呈现的。
当应用程序位于单个选项卡中时,复制功能有效。但是,当在 iframe 中尝试时,我遇到了这个错误:
Uncaught (in promise) DOMException: Disabled in this document by Feature Policy.
Run Code Online (Sandbox Code Playgroud)
这与Google 的这项政策变更有关。有什么方法可以使此功能正常工作?
附加信息:在 iframe 中呈现的应用与父应用不共享同一个域
背景阅读链接:
如何使Google Adsense块透明化?
它使用iframe,并驻留在其他域上,因此jQuery无法做任何事情.我试图用css来瞄准它,但这也是不可能的.有任何想法吗?
我不打算玩adsense系统,只是我有一个背景图片,并且通过实体填充,广告看起来很恶心.
我的问题似乎与此问题非常相似:Document.querySelector 返回 null,直到使用 DevTools 检查元素,但是存在一些非常令人困惑的显着差异,并且表明问题可能有所不同。
我正在尝试编写代码来替换 Google Chat 上输入框中的文本,因此我使用 document.querySelector。我需要的输入字段实际上是一个divwith contenteditable=true,所以我有以下代码:
document.querySelector('div[contenteditable]');
此代码最初在浏览器控制台中返回 null,直到在检查器中单击该元素(单击检查器中的元素并使用检查器光标产生相同的结果)。该元素显然存在,因为我可以在其中键入文本,并且检查器显示它存在于我正在查询的所有属性中(甚至在检查器中单击它之前),尽管查询返回 null。使用检查器单击元素将立即修复此问题。
另外(我不确定这是否相关,但似乎它可能暗示了问题的本质),即使单击检查器中的元素以使查询返回一个元素,该查询的结果不能存储在变量中。
我有一个看起来像这样的iframe:
<iframe id="iframe2" ...>
#document
<html>...</html>
</iframe>
Run Code Online (Sandbox Code Playgroud)
我正在尝试iframe使用html标签获取项目.
在JavaScript中,当我这样做时:
document.getElementByID("iframe2")
Run Code Online (Sandbox Code Playgroud)
这会返回正确的iframe.
但是,当我这样做时:
document.getElementByID("iframe2").childNodes
Run Code Online (Sandbox Code Playgroud)
返回值是[].
document.getElementByID("iframe2").getElementsByTagName("#document")并document.getElementByID("iframe2").getElementsByTagName("html")返回[].
我如何访问该html标签?
另外,那个#document标签叫什么?
我试图弄清楚如何选择,然后修改iframe我生成的HTML .iframe显示各种媒体(图像,pdf等).为了显示不同的项目,我最初使用以下内容创建它:
$('#mydiv').html("<iframe id='myiframe' src='path/file.jpg'></iframe>");
Run Code Online (Sandbox Code Playgroud)
然后,根据需要,使用以下内容更新其内容:
$('#myiframe').attr("src","path/newfile.jpg");
Run Code Online (Sandbox Code Playgroud)
这会产生这样的HTML(通过Chrome的元素查看器看到):
<div id='mydiv'>
<iframe id='myiframe' src='path/file.jpg'>
#document
<html>
<body style="margin:0">
<img style="-webkit-user-select:none" src="path/file.jpg">
</body>
</html>
</iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
我想选择动态生成的<img>标签,以便我可以调整其宽度.但我无法找出jquery选择器来做到这一点.想法?
我想在角度2打字稿中更改iframe内部元素的属性,类似于javascript代码
document.getElementById('iframeId').window.document.getElementById('home-grid').style.visibility = "hidden";
我的Angular打字稿代码:
var iframe = document.getElementById('iframeId');
var insideDoc = iframe.contentDocument || iframe.contentWindow.document;
Run Code Online (Sandbox Code Playgroud)
编译代码时出错:
stream.js:74
throw er; // Unhandled stream error in pipe.
^
Error: ./angularapp/web/component/mainPage/mainPage.ts
?[37m(?[39m?[36m35?[39m,?[36m32?[39m): ?[31merror TS2339: Property 'contentDocument' does not exist on type 'HTMLElement'.?[39m./angularapp/web/component/mainPage/mainPage.ts
?[37m(?[39m?[36m35?[39m,?[36m58?[39m): ?[31merror TS2339: Property 'contentWindow' does not exist on type 'HTMLElement'.?[39m
Run Code Online (Sandbox Code Playgroud)
有没有办法在角度2中实现这一点?请帮忙
javascript ×8
jquery ×5
html ×4
iframe ×4
dom ×2
adsense ×1
angular ×1
css ×1
css3 ×1
frameset ×1
html5 ×1
postmessage ×1
reactjs ×1
youtube-api ×1