相关疑难解决方法(0)

为什么jQuery或像getElementById这样的DOM方法找不到元素?

可能的原因是什么document.getElementById,$("#id")或者任何其他DOM方法/ jQuery选择器没有找到元素?

示例问题包括:

  • jQuery默默地无法绑定事件处理程序
  • jQuery的"吸气"方法(.val(),.html(),.text())返回undefined
  • 返回的标准DOM方法null导致以下任何错误:

    未捕获的TypeError:无法设置null的属性'...'未捕获的TypeError:无法读取null的属性'...'

    最常见的形式是:

    未捕获的TypeError:无法设置null的属性'onclick'

    未捕获的TypeError:无法读取null的属性"addEventListener"

    未捕获的TypeError:无法读取null的属性'style'

javascript jquery dom

446
推荐指数
6
解决办法
11万
查看次数

Html5 - 跨浏览器iframe postmessage - 孩子到父母?

我一直在关注这个教程 - 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)

我应该以不同的方式定位父母吗?

干杯保罗

javascript jquery html5 jquery-mobile

63
推荐指数
2
解决办法
8万
查看次数

如何使用document.getElementById在iframe中选择元素

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".我尝试了几种方法,但我找不到解决方案.

html javascript iframe frameset getelementbyid

61
推荐指数
3
解决办法
14万
查看次数

当html文档在iframe中时的Css选择器?

我正在尝试制作一个css选择器,根据天气html是否在iframe中分配不同的属性.我试过这个:

html:not(:root) body {
    background: black !important;
}
Run Code Online (Sandbox Code Playgroud)

我希望这适用background: black;于身体,如果它在iframe内部,但它没有,为什么?有没有css选项?如果html是root,我总是可以用javascript检查.

IE8支持不需要支持.

css css3

16
推荐指数
2
解决办法
2万
查看次数

在youtube iframe嵌入游戏中发起一个事件

我需要在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)

javascript jquery youtube-api

11
推荐指数
1
解决办法
3万
查看次数

跨站点iframe postMessage从子到父

我在浏览我的问题时从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

html javascript iframe jquery postmessage

9
推荐指数
2
解决办法
2万
查看次数

iframe 中的文本可以复制到剪贴板吗?

在我的 React 应用程序中,我在遍历数组后显示卡片(因此理论上可以有n卡片)。

我希望在用户单击该卡片时复制卡片中显示的文本。然而,问题是反应应用程序是在 iframe 内呈现的。

当应用程序位于单个选项卡中时,复制功能有效。但是,当在 iframe 中尝试时,我遇到了这个错误:

Uncaught (in promise) DOMException: Disabled in this document by Feature Policy.
Run Code Online (Sandbox Code Playgroud)

这与Google 的这项政策变更有关。有什么方法可以使此功能正常工作?

附加信息:在 iframe 中呈现的应用与父应用不共享同一个域

背景阅读链接:

javascript iframe reactjs

8
推荐指数
2
解决办法
2482
查看次数

谷歌Adsense透明背景

如何使Google Adsense块透明化?

它使用iframe,并驻留在其他域上,因此jQuery无法做任何事情.我试图用css来瞄准它,但这也是不可能的.有任何想法吗?

我不打算玩adsense系统,只是我有一个背景图片,并且通过实体填充,广告看起来很恶心.

adsense

7
推荐指数
1
解决办法
9132
查看次数

querySelector 在检查元素之前不会检测元素

我的问题似乎与此问题非常相似:Document.querySelector 返回 null,直到使用 DevTools 检查元素,但是存在一些非常令人困惑的显着差异,并且表明问题可能有所不同。

我正在尝试编写代码来替换 Google Chat 上输入框中的文本,因此我使用 document.querySelector。我需要的输入字段实际上是一个divwith contenteditable=true,所以我有以下代码:

document.querySelector('div[contenteditable]');

此代码最初在浏览器控制台中返回 null,直到在检查器中单击该元素(单击检查器中的元素并使用检查器光标产生相同的结果)。该元素显然存在,因为我可以在其中键入文本,并且检查器显示它存在于我正在查询的所有属性中(甚至在检查器中单击它之前),尽管查询返回 null。使用检查器单击元素将立即修复此问题。

另外(我不确定这是否相关,但似乎它可能暗示了问题的本质),即使单击检查器中的元素以使查询返回一个元素,该查询的结果不能存储在变量中。单击开发工具之前和之后的控制台

html javascript dom selectors-api

6
推荐指数
1
解决办法
2263
查看次数

如何在JavaScript中获取此子html元素?

我有一个看起来像这样的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标签叫什么?

html javascript

5
推荐指数
1
解决办法
8065
查看次数

如何使用jquery在iframe中选择标签?

我试图弄清楚如何选择,然后修改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选择器来做到这一点.想法?

jquery

4
推荐指数
1
解决办法
7427
查看次数

在角度2中更改iframe内元素的属性

我想在角度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中实现这一点?请帮忙

iframe angular

2
推荐指数
1
解决办法
1万
查看次数