【发布时间】:2014-06-01 11:05:27
【问题描述】:
我正在尝试解决我的广告皮肤问题。
我有一个网站可以滚动到固定的标题栏,我还有一个广告皮肤,当广告出现时,它会设置页边距。
为了加载皮肤,我使用带有 google dfp 的 javascript 作为广告服务器。 javascript代码是这样的,但要将广告嵌入我的页面Google DFP使用iframe,所以在我的网页中我有一个iframe,该代码位于iframe的头部。
iframe 查找父窗口并更改我网站的属性。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
var parent = $(window.parent.document);
var parent_body = parent.find('body');
var parent_pad = parent.find('.padded-container');
parent_body.css("backgroundImage", "url('%%VIEW_URL_UNESC%%%%FILE:JPG1%%')")
.css("backgroundPosition", "top center")
.css("backgroundRepeat", "no-repeat")
.css("backgroundAttachment", "fixed")
.css("margin-top", 100);
parent_pad.before('<a id="sitewrap" href="%%CLICK_URL_ESC%%%%DEST_URL%%" target="_blank" style="display:block;position:absolute;left:0;top:0;width:100%;height:100%;cursor:pointer"></a>');
});
</script>
一切正常,当我的网站加载 iframe 广告时,嵌入 iframe 标题中的 js 代码更改我网站的 css 属性并出现皮肤。
问题是我网站的导航栏,在 iframe 之前加载的粘性导航。 这是调用代码。
stickyNavigation : function stickyNavigation() {
if ($(window).scrollTop() > navTop) {
$container.addClass('fixed-nav');
} else {
$container.removeClass('fixed-nav');
}
},
在哪里
$nav = $('.site-nav');
navTop = $nav.offset().top;
iframe 是在页面之后加载的,所以$nav.offset().top 的值不考虑 100px 的边距。
如果我在浏览器控制台window.headerManager.init(); 中写入,我可以在加载皮肤时重新初始化脚本,但当然我需要在我加载到我的广告服务器上的 js 代码中添加window.headerManager.init();,而我不能从 iframe 头调用window.headerManager.init();,因为window是iframe的窗口,我需要捕获父窗口。
我该如何解决这个问题?
更新
【问题讨论】:
-
你可能想学习一些关于 jQuery 中的“链接”的知识,从而避免一遍又一遍地重复构建同一个 jQuery 对象。
-
@jfriend00 已编辑,现在更好了吗?
-
这个想法只是你的语法有错误(链接中间没有分号)。
-
完成。对于我的问题?
-
对不起,我不明白这个问题。您的问题似乎与 iframe 和
window.headerManager.init()有关,但您没有显示 iframe、window.headerManager.init()代码或您尝试调用该代码的位置或描述任何关于“它没有”的内容工作”的意思。我认为您应该将您的问题简化为仅与您的问题直接相关的内容,并包括详细描述您的问题的重要内容。
标签: javascript jquery iframe