0

我正在研究一段动态加载谷歌字体的代码。

该页面的某些内容是在 iframe 中加载的(在同一个域来源上)。我正在努力在 iframe 中加载和应用 Web 字体。我可以访问父文档和 iframe。这是我的代码:

<h1>FONT to test</h1>
<p>Another FONT to test</p>

<iframe src="iframe-content.html"></iframe>

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>

<script>
    WebFont.load({
        google: {
            families: [ 'Abel' ]
        },

        fontactive: function() {
            $('h1').css('font-family', 'Abel');
        }
    });
</script>

这是 iframe 内容代码:

<h1>IFRAME FONT to test</h1>
<p>IFRAME Another FONT to test</p>

我尝试使用此处概述的“上下文”变量: https ://github.com/typekit/webfontloader

但我没能成功。

提前致谢!

4

2 回答 2

1

我自己设法找出了这一点。

WebFont.load({
    google: {
        families: [ 'Abel' ]
    },
    context: window.frames[0].frameElement.contentWindow,
}

这将在 iframe 内的文档中加载字体。

于 2019-02-04T12:21:02.227 回答
0

iframe 本质上是它自己的页面,因此它不能从 iframe 标记所在的页面继承任何内容。

如果您将样式代码添加到iframe-content.html它应该可以工作。这是一个例子:

<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>
<h1>IFRAME FONT to test</h1>
<p>IFRAME Another FONT to test</p>
<script>
    WebFont.load({
        google: {
            families: [ 'Abel' ]
        },

        fontactive: function() {
            $('h1').css('font-family', 'Abel');
        }
    });
</script>

于 2019-02-03T19:22:07.657 回答