- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个侧边栏 #menuOption
我想让我的主要内容高度相等#contentWrapper
.
我的页面的基本结构是这样的。
HTML
<div id="wrapper">
<div id="menuOption">
</div>
<div id="mainContent">
<div id="contentWrapper">
<div id="content">
<div id="lartDisqus">
<?php comments_template( ); ?>
</div>
</div>
</div>
</div>
</div>
CSS
div#wrapper{height:100%;}
div#menuOption{float:left; width:40px; background:#444; min-height:100%;}
div#mainContent{min-height:100%; margin-left:40px; z-index:0; position:relative;}
div#contentWrapper{float:left; height:100%; width:85%; background-color:green;}
div#content{border-left:1px solid #ddd; border-top:1px solid #ddd; overflow:hidden;
margin-top:195px;}
jQuery
jQuery(window).on("load",function(){
var documentHeight = jQuery('#contentWrapper').height();
jQuery('#menuOption').css('height',documentHeight + 'px');
});
jQuery(function($){
$(window).resize(function(){
var documentHeight = $('#contentWrapper').height();
$('#menuOption').css('height',documentHeight + 'px');
}).resize();
});
我遇到的问题是 #mainOption
!= #contentWrapper
,如果我删除 php 函数 <?php comments_template( ); ?>
然后一切正常,javascript 正确计算高度。
我最后加载了我的 javascript,它肯定正在加载。
就好像 javascript 没有考虑 <?php comments_template( ); ?>
输出的 HTML 的高度一样.
我已经添加了一个指向实时站点的链接并着色了 #contentWrapper
这样您就可以更清楚地看到问题。 http://lartmagazine.co.uk/lorem-ipsum-dolor-sit-amet/
最佳答案
是的。您遇到问题的原因是因为您使用的是 Disqus。 Disqus 在页面加载后通过 JavaScript 生成您网站的整个评论部分,并且可能在您的 JavaScript 魔法运行之后。然而,经过一些谷歌研究,我发现你显然可以在 disqus 完成加载后 发送回调。以下是如何执行所需操作的示例。保持一切相同,除了 javascript:
function disqus_config() {
this.callbacks.afterRender.push(function() {
(function($){
$(window).resize(function(){
// you dont need the + 'px' stuff. jquery does this for you by default
$('#menuOption').css({ height:$('#contentWrapper').height() });
}).resize();
})(jQuery);
});
}
这是我找到的关于它的文章的链接。显然它在他们的 api 文档中没有记录。
http://www.electrictoolbox.com/running-javascript-functions-after-disqus-loaded/
编辑:(如果您使用 WordPress Disqus 插件)
在我最初的帖子之后,我收到了一些评论说这不起作用。所以我去我客户的一个开发站点上测试了它。果然,没有用; 但是,对于我的客户和发帖者,我追踪了为什么大多数其他用户需要这个。
根据我的建议,我的大多数客户都使用 WordPress。 WordPress 有一个由 Disqus 发布的 Disqus 插件,可以用相对较少的工作启用 Disqus 评论。经过一些调查,我发现这个插件有自己的 disqus_config()
函数,很像我发布的那个。话虽这么说,它们目前并没有以某种方式构建,因此您可以轻松地将自己的代码添加到该函数中,就像编写一个好的 WordPress 插件一样(就像我编写我的插件一样)。
考虑到这一点,不幸的是,您必须编辑插件以添加您的代码。这通常是不好的做法,因为每次更新插件时,您的代码都会消失。但是,有时候,编码糟糕的插件不会给你留下选择,你必须这样做,以实现你想要的(或者创建插件的完整副本并进行你的更改,并像其他人一样称它为你自己的似乎可以)。以下是如何编辑您的 Disqus 评论系统 WordPress 插件以满足您的需求:
从您的 WordPress 安装文档根目录,打开以下文件:
wp-content/plugins/disqus-comment-system/comments.php
在当前最新版本的插件中,在第 55 行,您会看到如下内容:
var disqus_config = function () {
此函数在第 93 行附近结束。将您的代码粘贴到这两行之间,如下所示:
var disqus_config = function () {
// ADD THIS CODE
this.callbacks.afterRender.push(function() {
(function($){
// SPECIAL SAUCE
$(window).resize(function(){
// you dont need the + 'px' stuff. jquery does this for you by default
$('#menuOption').css({ height:$('#contentWrapper').height() });
}).resize();
})(jQuery);
});
// END ADD THIS CODE
// copied from the plugin
var config = this; // Access to the config object
config.language = '<?php echo esc_js(apply_filters('disqus_language_filter', '')) ?>';
/*
All currently supported events:
* preData — fires just before we request for initial data
* preInit - fires after we get initial data but before we load any dependencies
* onInit - fires when all dependencies are resolved but before dtpl template is rendered
* afterRender - fires when template is rendered but before we show it
* onReady - everything is done
*/
console.log(config);
config.callbacks.preData.push(function() {
// clear out the container (its filled for SEO/legacy purposes)
document.getElementById(disqus_container_id).innerHTML = '';
});
<?php if (!get_option('disqus_manual_sync')): ?>
config.callbacks.onReady.push(function() {
// sync comments in the background so we don't block the page
var script = document.createElement('script');
script.async = true;
script.src = '?cf_action=sync_comments&post_id=<?php echo $post->ID; ?>';
var firstScript = document.getElementsByTagName( "script" )[0];
firstScript.parentNode.insertBefore(script, firstScript);
});
<?php endif; ?>
<?php
$sso = dsq_sso();
if ($sso) {
foreach ($sso as $k=>$v) {
echo "this.page.{$k} = '{$v}';\n";
}
echo dsq_sso_login();
}
?>
};
通过此编辑,您的特殊代码应该会在正确的时间运行。它使用我上面描述的相同方法,经过一些研究后它仍然有效,但不幸的是它确实需要您编辑插件。
希望这对很多人有帮助;因为,虽然 Disqus 有一些很大的好处,但它有时确实会给开发人员带来困难。
关于jquery - Javascript 没有完全考虑元素的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714907/
1。 Set 的 parallelStream 没有使用足够的线程。 Java8 parallelStream 不能完全并行工作。在我的计算机中,当任务数小于处理器数时,java8 集的 parall
我想将位置发送到 Google Geocoding API,因此我想用 + 替换文本中的任何空格或逗号(因为可以接收)。 例如,所有这些样本应返回 Glentworth+Ireland: Glentw
所以我需要为将要上传的图像文件生成较小的预览,并且我必须在每个文件名的末尾附加“_preview”。 目前我正在这样做: uploadFile.map((file) => { if (fi
我们可以用参数定义类型同义词,这在与实际类型一起使用时效果很好: type MyType t = t String String data Test a b = Test a b f :: MyTyp
给定一个包含一些 TGraphic 后代的 Delphi TPicture,我需要计算像素颜色和不透明度。我认为我必须为每个类提供不同的实现,并且我认为我已经涵盖了 TPngImage。 32 位位图
我正在调试 Powershell 项目。我正在使用 Import-Module 从我的 C# dll 加载 PS 模块,一切正常。尽管调用 Remove-Module 并不会完全卸载模块,因为 DLL
有没有办法在ElasticSearch中要求完整(尽管不一定精确)匹配? 例如,如果一个字段具有术语"I am a little teapot short and stout",我想匹配" i am
我正在尝试根据日期范围连接两个表。 表A格式为: ID CAT DATE_START DATE_END 1 10 2018-01-01 2020-12-31 2
我最近加入了一家公司,在分析他们的环境时,我注意到 SharePoint web.config 的信任级别设置为“完全”。我知道这绝对是一个糟糕的做法,并且希望 stackoverflow 社区能够帮
我构建了一个完全依赖 AJAX 的 php/js 应用程序,因此没有任何内容是静态的。 我正在尝试找到一种方法来转换基于内容的广告,该广告使用 AJAX 交付的内容作为关键字。 Google 的 Ad
我正在尝试根据日期范围连接两个表。 表A格式为: ID CAT DATE_START DATE_END 1 10 2018-01-01 2020-12-31 2
我熟悉 FileSystemWatcher 类,并使用它进行了测试,或者我使用快速循环进行了测试,并在目录中列出了类型文件的目录列表。在这种特殊情况下,它们是 zip 压缩的 SDF 文件,我需要解压
按照 Disqus 上的教程进行操作时,评论框不会呈现。从 disqus 上找到的管理员看来,它的设置似乎是正确的。 var disqus_config = function () { this
是否可以使用 Cython 将 Python 3 应用程序完全编译/链接为可执行格式(当然假设所有使用的模块都是 cythonable)。 我在 Linux 下工作,我希望获得一个依赖性尽可能小的 E
我有一个 C# 控制台应用程序,而不是运行预构建步骤(以获取 NuGet 包)。 当我调试这个时,我想传入一个参数并显示控制台。当我不调试它时,我不想看到它。我什至不希望它在那里闪烁一秒钟。 我找到了
我在 n 个节点上有一个完整的 19 元树。我标记所有具有以下属性的节点,即它们的所有非根祖先都是最年长或最小的 child (包括根)。我必须为标记节点的数量给出一个渐近界限。 我注意到 第一层有一
我正在阅读一篇关于 Java Volatile 关键字的文章,遇到了一些问题。 click here public class MyClass { private int years;
一本书中写道——“如果问题 A 是 NP-Complete,则存在解决 A 的非确定性多项式时间算法”。但据我所知,"is"——NP 完全问题的答案可以在多项式时间内“验证”。我真的很困惑。能否使用非
考虑以下问题: 有N个硬币,编号为1到N。 你看不到它们,但是给出了关于它们的 M 个事实,形式如下: struct Fact { set positions int num_head
我想制作一个包装数字类型的类型(并提供额外的功能)。 此外,我需要数字和包装器可以隐式转换彼此。 到目前为止我有: template struct Wrapper { T value;
我是一名优秀的程序员,十分优秀!