相关疑难解决方法(0)

如何检查角度是否正确加载

假设我想从CDN引用angularjs,但我还想在CDN调用失败的情况下回退,例如指向本地js文件.说到JQuery,我看过一些例子,你可以在javascript中做这样的事情:

if(typeof jQuery == 'undefined') {
    ....
}
Run Code Online (Sandbox Code Playgroud)

我能做什么类似的angularjs?

angularjs

19
推荐指数
4
解决办法
3万
查看次数

动态加载Javascript以及如何检查脚本是否存在

我正在使用以下技术动态加载Javascript:

var script = document.createElement("script");
script.type = "text/javascript";
script.src = "file.js";
document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

这是一种非常常见的方法.它也在这里讨论:http://www.nczonline.net/blog/2009/06/23/loading-javascript-without-blocking/

我知道如何在文件加载和执行后收到通知

我不知道的是,如果Javascript源文件的链接被破坏,我该如何得到通知.

谢谢

javascript

14
推荐指数
1
解决办法
3万
查看次数

检测并记录外部JavaScript或CSS资源无法加载的时间

我有多个<head>外部js和css资源的引用.大多数情况下,这些都适用于第三方分析等.不时(传闻),这些资源无法加载,通常会导致浏览器超时.当外部JavaScript或CSS资源无法加载时,是否可以检测并登录服务器?

我正在考虑某种类型的延迟加载机制,当失败时,将调用一个特殊的URL来记录此失败.有什么建议吗?

我认为发生了什么:

  1. 用户点击我们的页面,服务器端成功处理并提供页面

  2. 在客户端,HTML标头尝试连接到我们的第三方集成合作伙伴,通常是以"http://www.someothercompany.com ..."开头的javascript包含.

  3. 另一家公司无法处理我们的负载或者有很多工作时间,因此连接失败.

  4. 用户看到一个通用的IE Page Not Found,而不是我们服务器中的一个.

因此,即使我的网站已启动且其他所有内容都正常运行,只是因为这个调用第三方服务器失败了,一个在HTML页面标题中,我们完全无法启动.

javascript css jquery timeout http

7
推荐指数
1
解决办法
5061
查看次数

<link> onerror在IE中不起作用

我试图将事件的事件处理程序onerror(404错误)附加到<link>元素.

我的页面上有这样的内容:

<link rel="stylesheet" type="text/css" href="dead/link.css" onerror="handle404Error()" />
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome和Opera,但它也适用于IE9 +.我找到了这个,但我自己找不到解决方案.

有没有办法做到这一点,而无需编写额外的方法来动态加载样式?

注意:我没有用'jquery'标记这个问题,所以请不要在你的答案中使用它.

html javascript error-handling html5

7
推荐指数
1
解决办法
2775
查看次数

如何检测文件的脚本加载://在Firefox中URL失败?

我想检测脚本标记(动态创建并添加到DOM)是否无法加载.onerror事件有效,但Firefox中的file:// URL除外.

不幸的是没有任何的技术在这里描述的(除了超时,这是我不能接受的情况下),似乎在Firefox中工作,如果脚本标签的src是一个文件:// URL(或相对URL和页面被通过文件加载: //网址)

测试用例:

var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'doesnotexist.js');
script.onerror = function() { alert("Loading failed!"); }
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

将其加载到带有file:// URL的HTML页面中.onerror事件不会在Firefox中执行.从网络服务器或Safari或Chrome加载,它会.

这对我来说似乎是个错误.有没有任何已知的方法呢?

javascript firefox onerror

6
推荐指数
1
解决办法
1994
查看次数

Javascript onload和脚本回调函数,哪个优先?

我正在加载一个使用回调函数的外部脚本,它返回一些特定的数据.如果未收到此数据,则应显示错误.

这是我做的代码:

<script>
//setting initial state so that function will only work once
var visitors_loaded=false;  
var my_callback = function( data ) {
    if (visitors_loaded) return 0;
    if (data) { 
        //success: callback function is called and it has a proper data
    visitors_loaded=true;
    alert(JSON.stringify(data));
    }
    else alert ('error'); //something went wrong
};
</script>
<script onload="my_callback(null)" onerror="my_callback(null)"
src="https://api.clicky.com/api/stats/4?site_id=32020&sitekey=9a19b1a4d1171193&type=visitors&date=this-month&output=json&json_callback=my_callback"></script>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的......很多东西可能会出错,所以我自然会添加一个onerror事件.如果您将脚本的主机名或域更改为不存在的内容,则会发生此错误事件.

但是,如果您只更改脚本的URL,它仍然可以连接到服务器并激活onload事件.我的回调函数不会被调用那些无效的请求,所以我也添加了一个onload处理程序.

现在的问题是,如果所有正常加载并返回数据,它将同时触发回调函数onload.我注意到在onload之前触发了回调函数并设置了visitor_loaded变量,以便只调用一次处理函数.

到目前为止,它在JS小提琴和我的离线网站中完美运行,但我想知道这是否是预期的行为?在onload处理程序之前,json_callback函数是否总是优先?

https://jsfiddle.net/5sfk9ht5/4/

javascript callback onload onerror external-script

6
推荐指数
1
解决办法
6789
查看次数

检查是否可以使用 JavaScript 访问在线资源,不需要同源策略允许它

我想检查是否可以使用 JavaScript 函数访问服务器。

通过reachable,我的意思是,如果服务器应答,我不在乎哪个HTTP 状态代码,它是可达的。

Stackoverflow/Google 帮我实现了这个功能:

function check(target)
{
    var xhr = new XMLHttpRequest();
    var target = "https://"+target+"/index.php";
    var num = Math.round(Math.random() * 10000);

    xhr.open("HEAD", target + "?num=" + num, true);
    xhr.send();
    xhr.addEventListener("readystatechange", processRequest, false);

    function processRequest(e)
    {
      if (xhr.readyState == 4)
      {
        if (xhr.status !== 0)
        {
          return true;
        }
        else
        {
          return false;
        }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果目标允许与Access-Control-Allow-Origin: *(或特别是客户端)进行操作,则效果很好。但事实并非如此。

我遇到了许多解决方案,它们似乎都依赖于此。

如何Access-Control-Allow-Origin使用 JavaScript独立于服务器上的设置检查服务器是否可访问?

编辑:我只是想补充一点,我无法修改目标(例如更改标题),但我能够识别应该可用的资源(例如https://target/this-specific-site.php )

编辑2: …

javascript http access-control

4
推荐指数
1
解决办法
2397
查看次数