【问题标题】:How to add iFrame attributes, that will not validate as HTML5, via JQuery如何通过 JQuery 添加不会验证为 HTML5 的 iFrame 属性
【发布时间】:2015-06-23 22:40:11
【问题描述】:

我在 HTML5 页面上有一些 iFrame,每个都有“a-iframe”类。页面上大约有 4 个这样的框架,所有不同的形状和大小。

我如何通过类名获取这些框架中的每一个并应用这些属性,这些属性不会被 W3C 验证器在 HTML 中验证:

scrolling="no" frameborder="0" allowtransparency="true"

我当前无法正常工作的代码如下:

<script type="text/javascript">
    $.each($(".a-iframe"), function() 
    {   
        $(this).attr({
            scrolling: "no",
            frameborder: "0",
            allowtransparency: "true"
        });     
     });
</script>

【问题讨论】:

    标签: javascript jquery html iframe


    【解决方案1】:

    这应该可以解决问题。

    $(document).ready(function() {
      $(".a-iframe").each(function() {   
        $(this).attr({
          scrolling: "no",
          frameborder: "0",
          allowtransparency: "true"
        });
        console.log($(this));
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <iframe src="#" class="a-iframe" scrolling="no" frameborder="0" allowtransparency="true"></iframe>

    【讨论】:

    • 不,当 iframe 指向具有更多内容或边距的页面时,如果 iframe 允许,滚动条仍会显示。我不能使用您在&lt;iframe&gt; 标记中放置的“内联”属性,因为 html5 验证将失败。 scrolling、frameborder 和 allowtransparency 都已弃用。我真的不明白,因为在标准 css 中没有替代品。
    • 当然有! overflow: hiddenborder: none
    • 您可以通过$(selector).css('propertyName');获取CSS属性
    【解决方案2】:

    玩了一会儿你的代码后,我在jsfiddle上观察到,可能是因为滚动条是否显示是在内容加载时确定的,而不是在设置属性时确定的,所以我改为:

    已编辑:这些代码将在我的网络上运行:

    $('.a-iframe').attr({
        scrolling: "no",
        frameborder: "0",
        allowtransparency: "true"
      });
    

    当使用选择器时,你会得到所有符合选择器的数组,jquery函数可以一次性应用到它们。

    $(function() {
    
      $('.a-iframe').attr({
        scrolling: "no",
        frameborder: "0",
        allowtransparency: "true"
      });
          
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <iframe class="a-iframe" src="https://jsfiddle.net/"></iframe>
    <iframe data-aa="74836" class="a-iframe" src="https://ad.a-ads.com/74836?size=468x60" style="width:468px;height:60px;border:0px;border-width:0px;border-style:none;bor‌​der-color:transparent;background-color:#FFFFFF;overflow:hidden !important;padding: 0px !important;margin: 0px !important;"></iframe>
    <iframe class="a-iframe" src="https://validator.w3.org/check"></iframe>
      

    【讨论】:

    • 我不能像那样即时更改 src。即使我尝试了$(this).attr('src', $(this).attr('src'));,它仍然可能会尝试加载框架两次。滚动条仍然存在!顽固的滚动条! $( window ).load(function() { ... }) 会帮助这个问题吗?看this
    • 第二次加载不会让iframe滚动条消失吗?也许你可以改变我的 jsfiddle 例子来证明你有什么限制?
    • idk,所有 iframe 都有不同的源值。是否有另一种在不更改源的情况下重新加载的方法?不过,我真的无法重新加载源内容,因为 iframe 指向的网站会计算和监控展示次数(即页面加载),因此在每次页面加载时双页面加载是不可行的,因为我。
    • 你定义了css规则吗?如果我把它放在我的例子中,即使我摆脱了所有的 js,它也不会显示滚动条:S
    • jsFiddle 不会(在这种情况下无论如何)显示如果您在自己的服务器上上传具有预置 iFrame 的 html 文件会看到的准确表示。他们必须限制一些用户代码,因为所有优秀的小黑客都试图利用恶意 js 来利用它们。
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2013-04-04
    相关资源
    最近更新 更多