使用 jQuery 调用脚本以及 if 语句中的参数

Call a script along with parameters from if statement using jQuery

本文关键字:语句 参数 if jQuery 调用 脚本 使用      更新时间:2023-09-26

我有一个我无法控制的脚本,并且位于另一个域中。 默认过程是仅将其包含在脚本标记中,并且运行良好。

我不想默认运行它,所以我有一个 if 语句,如果为 true,我想运行脚本。所以默认选项是:

<script src="http://domain/site/script?Id=12345&delayMs=2000&stayMs=10000&chance=0.1" type="text/javascript" ></script> 

我教我可以使用jQuery.getScript()让它运行上面的url,但这不起作用。 我不知道包含的实际脚本和函数的正确链接,因此我无法获取脚本并调用函数。

任何想法都会有所帮助。

问候布莱恩

由于您遇到了跨域问题,请尝试此操作(无论如何,$.getScript()只是对此的简写,除了crossDomain: true)。

$.ajax({
    url: 'http://domain/site/script?Id=12345&delayMs=2000&
                                    stayMs=10000&chance=0.1',
    crossDomain: true,
    dataType: 'script',
    success: function () {
        // script is loaded
    },
    error: function () {
        // handle errors
    }
});

您可以尝试使用纯JS的另一种解决方案:

function loadScript(src, callback)
{
  var s,
      r,
      t;
  r = false;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function() {
    //console.log( this.readyState ); 
    //uncomment this line to see which ready states are called.
    if ( !r && (!this.readyState || this.readyState == 'complete') )
    {
      r = true;
      callback();
    }
  };
  t = document.getElementsByTagName('script')[0];
  t.parent.insertBefore(s, t);
}

用法:

var url = 'http://domain/site/script?Id=12345&delayMs=2000&
                                    stayMs=10000&chance=0.1';
loadScript(url, function(){
    console.log('script loaded');
});