如何从javascript正确检查网络资源?

时间:2016-09-09 10:27:52

标签: javascript html css

我有一个加载了很多资源的页面。

我想知道是否有任何方法可以从javascript正确加载资源。

我有:

index.html

<script src="myResource.js"></script>

如何在javascript中知道myResource是否正确加载而不在myResource文件中搜索某些变量。

我想做点什么:

window.network.isLoaded("myResource.js") ? 'it is loaded!' : 'it is not loaded';

这可能吗?

4 个答案:

答案 0 :(得分:1)

您应该可以使用 select UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(MY_FIELD_BLOB_TYPE)) from MY_BLOB_TABLE where MY_BLOB_TABLE_ID = 12345 ; 事件侦听器实现此目的:

load

正如@pwolaq所指出的,当脚本已经加载时,此代码将不起作用。

要解决此问题,您可以使用事件委派&amp;事件捕获(并确保此代码放在之前您的脚本定义):

var $script = document.querySelector("[src='myResource.js']");

$script.addEventListener("load", function () {
    // your callback's code
});

答案 1 :(得分:0)

通常脚本是同步加载的。所以下面的任何脚本:

 <script src="myResource.js"></script>

可以访问其前任变量和函数。 更好的方法是检查脚本加载的资源是否存在,然后是脚本本身。

答案 2 :(得分:0)

你可以使用Javascript来做到这一点 例如,使用jQuery:

$.getScript("myResource.js", function(data, textStatus, jqxhr) {
  if (jqxhr.status !== 200) {
    console.error('resource could not be loaded:', textStatus);
  }
});

或者,只需使用javascript:

var script = document.createElement("script");
script.setAttribute("type", "text/javascript")
script.setAttribute("src", "myResource.js");
if (typeof script === "undefined") {
  console.error("resource could not be loaded");
} else {
  document.getElementsByTagName("head")[0].appendChild(script);
}

答案 3 :(得分:-1)

您可以这样做:

  updateProfileInformation(user: User) {
    var headers = new Headers();
    headers.append('Content-Type', this.constants.jsonContentType);

    var t = localStorage.getItem("accessToken");
    headers.append("Authorization", "Bearer " + t;
    var body = JSON.stringify(user);

    return this.http.post(this.constants.userUrl + "UpdateUser", body, { headers: headers })
      .map((response: Response) => {
        var result = response.json();
        return result;
      })
      .catch(this.handleError)
      .subscribe(
      status => this.statusMessage = status,
      error => this.errorMessage = error,
      () => this.completeUpdateUser()
      );
  }

希望有所帮助