【问题标题】:How to change external script url onclick?如何更改外部脚本 url onclick?
【发布时间】:2013-05-26 07:33:00
【问题描述】:

我一直在努力寻找解决问题的方法。我不是 javascript 经验丰富的人,但我正在寻找一种方法来根据 ahref 上的 onclick 事件稍微更改外部 js url。

现在我的头标签里有这个:

<script type="text/javascript" src="http://www.domain.com/loader.php?GID=126&go=&sid="></script>

我希望 SID 参数根据锚标记上的点击设置为 1 或 2。使用这段代码调用加载器,但 SID 必须在在加载器被调用之前更改。

<a href="/#download" onclick="javascript:Load_126(); return false;">

有没有人可以告诉我这是否可能?或许可以为我指明正确的方向?

问候,

Sedoc94

编辑 1:我已经指出了一个方向,并认为我可以使用 jQuery.getScript() 完成这项工作,但我仍然不知道如何在我的情况下使用它。

编辑 2:由于脚本需要从外部域中提取,我将不得不使用 $.ajax() 函数。

现在我有:

function loadGame(sid){
    $.ajax({
      url: 'http://www.domain.com/loader.php?GID=126&go=&sid='+sid,
      dataType: "script",
      crossDomain: true,
      success: gLoad_12603()
    });
}

我通过 ahref onclick 调用 loadGame 函数,但控制台显示:Uncaught ReferenceError: gLoad_12603 is not defined。它应该工作。但我猜测它以某种方式给出了这个错误,因为该函数只存在于从外部 URL 返回的脚本代码中。

有什么想法可以让它发挥作用吗?

【问题讨论】:

  • 我认为不可能即时更改脚本 src,因为需要重新加载 JS 代码。为什么不使用简单的 AJAX 来完成这项任务?查看jQuery.get
  • 在 ajax 对象 onreadystatechange 上添加事件处理程序,但如果您使用 jquery,请阅读此api.jquery.com/Ajax_Events
  • 我刚读到,但它说我需要使用我已经在使用的“成功”事件处理程序?
  • @LightStyle 答案应该可以。使用他的答案有什么问题?顺便说一句,这里使用 $.getScript 或 $.ajax,因为您似乎不想做任何改变
  • 有gLoad_12603函数吗?

标签: javascript ajax jquery xhtml


【解决方案1】:

您需要提供将在 AJAX 请求完成时执行的成功回调。现在,您实际上是在说 gLoad_12603() 并在启动 AJAX 请求之前执行该函数。您不能只删除对偶,因为 jQuery 可能会在 AJAX 请求实际启动之前尝试获取对 gLoad_12603 函数的引用。因此,您必须将对 gLoad_12603() 的调用封装在一个函数中,以确保一切正常:

function loadGame(sid){
    $.ajax({
      url: 'http://www.domain.com/loader.php?GID=126&go=&sid='+sid,
      dataType: "script",
      crossDomain: true,
      success: function() {
          gLoad_12603();
      }
    });
}

【讨论】:

  • 这个小细节似乎可以解决问题!非常感谢!
【解决方案2】:

jQuery.getScript()

function loadScript(sid) {
    $.getScript("http://www.domain.com/loader.php?GID=126&go=&sid="+sid, function(script, textStatus, jqxhr) {
        //code you want to be executed after the script is loaded inside the page
        //you can delete this callback if you don't need it
    });
}

并以这种方式使用它,将每个锚点上的 sid 更改为加载不同的脚本:

<a href="/#download" onclick="javascript:loadScript(126); return false;">
<a href="/#download" onclick="javascript:loadScript(127); return false;">

【讨论】:

    【解决方案3】:

    尝试删除“success: gLoad_12603()”中的括号“()”。

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多