我想用变量更改脚本内的超链接。它是FB SDK,我想用用户在我网站上选择的语言显示SDK。
变量为{$lang_fb}
并返回正确的结果(此处为:en_US),如果我在普通的php中使用它。
如果我在纯HTML页面上的脚本中使用变量,则没有结果。
剧本:
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/{$lang_fb}/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
<script>
会在页面中生成相同的代码
我该怎么办?
答案 0 :(得分:1)
如果您使用的是PHP脚本,则需要放置php标记或转义字符串。
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/<?php echo {$lang_fb} ?>/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/".{$lang_fb}."/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
如果您不分享更多代码,我们无法查看会发生什么。
答案 1 :(得分:1)
解决方案:
js.src = "//connect.facebook.net/{/literal}{$lang_fb}{literal}/sdk.js#xfbml=1&version=v2.5&appId=1234567890";
感谢您的帮助!!!
答案 2 :(得分:0)
由于您使用的文件扩展名与PHP无关,因此您需要setup php to process this extension。
对于apache,您可以使用文件.htaccess
执行此操作:
AddHandler application/x-httpd-php .tpl
当然,您还需要require
创建{$lang_fb}
的Facebook SDK。
答案 3 :(得分:-2)
$lang_fb
是一个php变量,无法在javascript中运行。你是否在php文件中嵌入脚本标签?如果是,那么您可以简单地使用以下内容:
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/"+<?php echo $lang_fb; ?>+"/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>