我想检测脚本标记(动态创建并添加到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加载,它会.
这对我来说似乎是个错误.有没有任何已知的方法呢?
在Webform1.aspx.cs中:
protected void Page_Load(object sender, EventArgs e)
{
throw new Exception("test exception");
}
Run Code Online (Sandbox Code Playgroud)
在Global.asax.cs中:
protected void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (Server.GetLastError() is HttpUnhandledException)
Server.Transfer("ErrUnknown.aspx");
}
Run Code Online (Sandbox Code Playgroud)
但是从不调用Application_Error事件处理程序.相反,我得到一个运行时错误页面.
在抛出异常后,我需要做什么才能调用Application_Error?
我必须计算图像加载时间.onLoadHandler对此负责.
<img onError="onErrorHandler(this);" onLoad="onLoadHandler(this);" alt="" border='0' width='1' height='1' src='http://exmaple.com/02.jpg'/>
Run Code Online (Sandbox Code Playgroud)
如果图像是具有200个服务器响应的普通文件,则它工作正常.
但是合作伙伴提供了302个重定向链,并且onError会在第一次重定向时触发.所以我永远不会真正加载图像时间.
有一些解决方法吗?
谢谢
在我因为尝试如此鲁莽的事情而大喊大叫之前,让我告诉你,我不会在现实生活中这样做,这是一个学术问题.
假设我正在编写一个库,我希望我的对象能够根据需要编写方法.
例如,如果你想调用一个.slice()方法,而我没有一个方法,那么window.onerror处理程序会为我启动它
无论如何,我在这里玩这个
window.onerror = function(e) {
var method = /'(.*)'$/.exec(e)[1];
console.log(method); // slice
return Array.prototype[method].call(this, arguments); // not even almost gonna work
};
var myLib = function(a, b, c) {
if (this == window) return new myLib(a, b, c);
this[1] = a; this[2] = b; this[3] = c;
return this;
};
var obj = myLib(1,2,3);
console.log(obj.slice(1));
Run Code Online (Sandbox Code Playgroud)
另外(也许我应该开始一个新问题)我可以更改我的构造函数以获取未指定数量的args吗?
var myLib = function(a, b, c) {
if (this == window) return new myLib.apply(/* what …Run Code Online (Sandbox Code Playgroud) 我有这样的代码
<a class="img" href="LINK">
<img src="GOOD_IMG" title="title" onerror="src='ERROR_IMG'">
</a>
Run Code Online (Sandbox Code Playgroud)
在FireFox和chrome中,它的行为与您期望的一样(如果存在则显示GOOD_IMG,如果不存在则显示ERROR_IMG)但在IE(9)中它始终显示ERROR_IMG.
如果我在IE中调试并在运行中设置onerror其他东西,例如
onerror="alert('error')"
Run Code Online (Sandbox Code Playgroud)
然后会出现警告消息并显示正确的图像.
什么可能导致IE导致onerror激活其他浏览器没有问题的地方?
有什么事我能找到导致什么的onerror吗?
谢谢
在我的app.module().run()中,我设置了一条onerror消息,以便在遇到javascript错误时弹出toastr消息.
我希望这可以在我的整个ngApp中工作.那可能吗?
以下代码弹出一个toast,因为asdf是无效的JavaScript.
angular.module("app").run(['notificationFactory', '$window',
function (notificationFactory, $window) {
$window.onerror = function (errorMsg, url, lineNumber) {
notificationFactory.error(errorMsg);
};
asdf
}]);
Run Code Online (Sandbox Code Playgroud)
但是如果我将'asdf'放入控制器,$ window.onerror就不会触发.
是否有可能通过全球性的误差调用来捕获这个?
App.run在我的app.js文件中,并在我的控制器之前加载.
在我的控制器中,我似乎无法获得$ window.onerror工作.我尝试将onerror函数移动到控制器.我还试图看看img标签是否会产生错误无济于事.
<img ng-src="someFileThatDoesntExist.png" />
Run Code Online (Sandbox Code Playgroud) 我正在阅读如何使用On Error Resume Next,我正在试图找出该行将适用于该程序的时间.在Microsoft站点上,我发现这句话:"An On Error Resume Next语句在调用另一个过程时变为非活动状态." 这到底是什么意思?什么被认为是一个程序?
我问,因为我在我的程序中使用了这行,但是我不希望它出现Resume Next所有发生的运行时错误,只是下一行中的明显错误.
代码:Dim zRange As Range
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
On Error Resume Next
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我也发现(并且已知有一段时间)On Error或者GoTo行被认为是编码不好.有没有Try-Catch我可以用于这样的线?
我在想这样的事情:
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
Try
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Catch()
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我甚至没有做任何事情,因为我觉得不需要.
谢谢你的时间.
我正在加载一个使用回调函数的外部脚本,它返回一些特定的数据.如果未收到此数据,则应显示错误.
这是我做的代码:
<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函数是否总是优先?
我想知道你在改造Rx onError时处理不同类型错误(如http异常,没有互联网连接异常等)的方法,而不使用instanceof像这里提到的那样:如何使用RxJava处理Retrofit 2中的网络错误或处理:处理错误在Retrofit 2 RX中
在kotlin中,我将简单地为每种throwable做一些扩展函数来做我想做的事情.
但是我被迫在项目中使用Java.有什么好建议吗?
是构建某种错误处理程序的方法,如下所示:
public interface ErrorHandler {
void handleError(Exception e);
void handleError(HttpException e);
void handleError(NullPointerException npe);
}
Run Code Online (Sandbox Code Playgroud)
好?我知道这不是因为每次我需要处理另一个特定的错误我被迫改变界面,所以它违反了Open Close Principle.但我无法找出任何解决方案.
欢呼Wojtek
我想用react中的默认图像替换断开的链接.我通常会使用onerror,但它没有按预期工作.具体来说,我得到了"在现有状态转换期间无法更新(例如在内部render)"的重复错误.最终,出现默认图像,但需要很长时间(此错误的许多打印).这是一个非常类似的问题:react.js替换img src onerror.我尝试了这个解决方案(第一个,不使用jQuery),但它导致了所描述的错误.我猜onError必须不断被触发,从而导致不断重新渲染.任何替代解决方案/修复?
import React from 'react';
import { connect } from 'react-redux';
//import AddImageModal from '../components/AddImageModal.js';
import Button from 'react-bootstrap/lib/Button';
//import { getPostsByUserId } from 'actions'
import Posts from '../components/Posts.js';
var Modal = require('react-modal');
require('../../styles/AddImageModal.scss');
import { save_post } from '../actions';
const customStyles = {
content : {
top : '50%',
left : '50%',
right : 'auto',
bottom : 'auto',
marginRight : '-50%',
transform : 'translate(-50%, -50%)'
}
};
var MyWallScreen = React.createClass({
getInitialState: function() …Run Code Online (Sandbox Code Playgroud)