从iframe内部通过jquery编辑iframe周围的Div

时间:2014-10-29 19:28:39

标签: javascript jquery html iframe

我确信这听起来有点奇怪,但这是背景......

我们利用加载聊天程序的公司,因此我们可以支持我们的客户,进入我们的页面。这是通过javascript和jquery完成的,并创建一个这样的结构:

<div id="myid" style="...; right: 0px;..."><div><iframe></iframe></div></div>

还有更多的东西,但那些是重要的部分。现在,该工具允许我们放置自定义脚本,它将放在iframe中。我的目标是删除“right:0px”,这是我通过以下代码完成的,但我不想将该代码放在此工具集成的每个页面上。我想将它加载到工具中,并在创建iframe和div时运行它。

父母的工作代码:

$(document).ready(function() {
  function checkPos() {
    $('#myId').each(function() {
      var oldstyle = $('#myId').attr('style');
      var newstyle = oldstyle.replace(' right: 0px;','');
      $('#myId').attr('style', newstyle);
    });
    setTimeout(checkPos, 100);
  };
  $(document).ready(function() {
    setTimeout(checkPos, 100);
  });
});

一旦放入他们提供的代码包含方法中,我就很难让它等到div标签实际上具有“right:0px;”在它的样式标签。我唯一需要运行的是$('#myId').each(function()

中的三行

基本上,我需要帮助,让iframe中的脚本定位iframe嵌套的div。

1 个答案:

答案 0 :(得分:0)

假设您使用的任何工具实际上允许您将自定义脚本传递给iframe中呈现的内容(对我来说似乎很可疑),在jquery中修改样式的更好方法是使用css函数:

$('#myId').css('right', '0px');

注意我也删除了$.each功能。您正在使用id定位元素,因此无需迭代。

修改

无论如何,回到延迟执行到目标#myId实际存在的问题。如果他们真的将你的javascript注入他们的页面(再次看起来很可疑),那么将上述代码附加到$(document).ready()事件应该可以解决问题,只要这个监听器附加到他们的文档

如果所有其他方法都失败了,请尝试使用waitUntilExists插件:

来源:

https://gist.github.com/buu700/4200601

相关问题:

How to wait until an element exists?