加载src属性中带有可变参数的javascript

loading javascript with variable parameter in src-attribute

本文关键字:变参 参数 javascript src 属性 加载      更新时间:2023-09-26

我试图制作一个具有响应宽度的谷歌趋势图。但它不会起作用。它正在按应有的方式加载URL。当我尝试加载外部JavaScript时,我的页面上没有显示图表。有人能帮我或给我一个提示吗?

这是我的代码:

<h1>Google Trends</h1>
<script>
 $(document).ready(function(){
  var chartwidth = ($('.content').innerWidth());
  $(function () {
   $('<script>')
    .attr('type', 'text/javascript')
    .attr('src',  '//www.google.com/trends/embed.js?hl=de&q=waffenbesitzkarte,+waffenpass,+waffenschein&geo=AT&date=today+24-m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=' + chartwidth + '&h=330')
    .replaceAll('#chartA');
  });
  $(function () {
   $('<script>')
   .attr('type', 'text/javascript')
   .attr('src',  '//www.google.com/trends/embed.js?hl=de&q=waffenrecht,+waffengesetz,+waffenbesitz&geo=AT&date=today+24-m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=' + chartwidth + '&h=330')
   .replaceAll('#chartB');
  });
 });
</script>
<div id="chartA"></div>
<div id="chartB"></div>

这是我更新的代码:

<h1>Google Trends</h1>
<script>
 $(document).ready(function(){
  var chartwidth = ($('.content').innerWidth());
  $.getScript('//www.google.com/trends/embed.js?hl=de&q=waffenbesitzkarte,+waffenpass,+waffenschein&geo=AT&date=today+24-m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=' + chartwidth + '&h=330', function(data){
   $('#chartA').append(data);
  });
  $.getScript('//www.google.com/trends/embed.js?hl=de&q=waffenrecht,+waffengesetz,+waffenbesitz&geo=AT&date=today+24-m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=' + chartwidth + '&h=330', function(data){
   $('#chartB').append(data);
  });
 });
</script>
<div id="chartA"></div>
<div id="chartB"></div>

您只是在创建<script>标记的jQuery对象,而不是插入DOM。如果你想包含一个外部JS文件,并且你正在使用jQuery,那么就做

 $.getScript("yourScript.js", function(){
    // Callback when script is completely loaded.
 });

在你的情况下,做:

$.getScript('//www.google.com/trends/embed.js?hl=de&q=waffenbesitzkarte,+waffenpass,+waffenschein&geo=AT&date=today+24-m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=' + chartwidth + '&h=330', function(){
});

http://www.google.com/trends/embed.js?hl=de&q=waffenbesitzkarte,+waffenpass,+waffinschein&geo=AT&日期=今天+24m&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TIMESERIES_GRAPH_0&导出=5&w=400&h=330将返回一个javascript代码片段,该代码片段尝试执行document.write。您正在尝试异步加载javascript($.getScript),而浏览器不允许异步加载的外部脚本写入文档。

您可以通过添加带有src的script标记来加载谷歌图表的脚本,就像使用getScript()加载一样。

希望这能有所帮助!