我正在开发的网站上有一些小部件,我从javascript文件中异步加载它们,所以它不会阻止DOM完成。
例如,我使用Digg和Buzz小部件执行此操作并且工作正常:
// Buzz Share
function buzzShare() {
$jQ('.sharebox').append('<div class="widget"><a title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-count"></a></div>');
$jQ.getScript('http://www.google.com/buzz/api/button.js');
}
// Digg Share
function diggShare() {
$jQ('.sharebox').append('<div class="widget"><a class="DiggThisButton DiggMedium"></a></div>');
$jQ.getScript('http://widgets.digg.com/buttons.js');
}
对于新的Google +1小部件,相同的逻辑不起作用:
// PlusOne Share
function plusOneShare() {
$jQ.getScript('http://apis.google.com/js/plusone.js');
$jQ('.sharebox').append('<div class="widget"><div class="g-plusone" data-size="tall" data-count="true"></div></div>');
}
我尝试使用HTML5标记和<g:plusone></g:plusone>
。都没有工作。
以下是刚刚启动的服务的文档:http://code.google.com/apis/+1button/
我还注意到,如果将脚本直接嵌入到HTML中,您可以执行以下操作。
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
有没有办法将{"parsetags": "explicit"}
参数与jQuery .getScript
一起使用?
P.S。我也尝试在plusOneShare函数中切换第一行和第二行,但这两行都不起作用。
谢谢!
答案 0 :(得分:2)
您使用的浏览器是什么?以下整页示例适用于我:
<html>
<head>
<title>jQuery Dynamic load test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.getScript('https://apis.google.com/js/plusone.js');
$('.sharebox').append('<div class="widget"><div class="g-plusone" data-size="tall" data-count="true"></div></div>');
});
</script>
</head>
<body>
Hello world!
<div class="sharebox"></div>
</body>
</html>
答案 1 :(得分:2)
我最终做了类似的事情来支持将参数传递给+1脚本:
var hd = document.getElementsByTagName('head')[0];
var scr = document.createElement('script');
scr.type ='text/javascript';
scr.async = true;
scr.innerHTML = "{lang: 'es-419'}"; // Magic! :)
scr.src = "https://apis.google.com/js/plusone.js";
hd.appendChild(scr);
答案 2 :(得分:2)
如图所示 http://code.google.com/intl/pt-BR/apis/+1button/#plusonetag-parameters
您可以使用
进行显式加载$(document).ready(function() { gapi.plusone.go('content'); });
答案 3 :(得分:2)
异步加载的另一种解决方案。对我来说非常适合,特别是如果你正在使用php并想动态分配语言。
<script type="text/javascript">
window.___gcfg = {
<? if ($lang!= 'en'){ ?>
lang: '<?=$lang?>',
<? } ?>
parsetags: 'explicit',
annotation: 'inline',
size: 'medium'
};
$(document).ready(function() {
$.getScript('https://apis.google.com/js/plusone.js',function(){
gapi.plusone.render("plusone-div");
});
});
</script>
答案 4 :(得分:1)
如果使用getScript(或任何异步加载方法),最终会在不受支持的浏览器上显示空白页。 plusone.js替换你在iphone / ipad / android等上的整个页面。
我也在寻找能够使用'parsetags:'使用getScript的显式“的解决方案..
答案 5 :(得分:1)
我在问题中描述的方法非常有效。如果我是正确的,谷歌的结尾只会出现某种错误。在他们宣布这个功能的几个小时后,我试图让这项功能正常运行。大约两天后,它现在完美无缺。
.getScript
方法是通过AJAX加载+1的好方法。
答案 6 :(得分:1)
现在,我也对此做了一些研究 - 我喜欢$ .getScript - (不是以令人毛骨悚然的方式,但只是因为它加快了我所有页面的初始显示)。如果你曾经建立过一个包含对Twitter,Facebook,Plusone,OpenX等的引用的网站,你知道我在说什么:)
无论如何,我最近想到的是“plusone.js”可以加载异步(使用jQuery $ .getScript)并同时被指示使用某种语言:
<script type="text/javascript">
window.___gcfg = { lang: 'sv-SE' };
$(document).ready(function() {
$.getScript("https://apis.google.com/js/plusone.js");
});
</script>
<body>
<g:plusone size="medium"></g:plusone>
</body>
希望这有助于任何人:)