有没有方法来检查链接,img,脚本是否加载失败?

时间:2016-08-31 03:40:16

标签: javascript error-handling

这是我尝试过的。我相信,恐怖分子不会为链接和脚本工作。我不太确定。

基本上,我想要达到的目标是。当浏览器无法加载某些资产时,我将重新加载该网页。不幸的是,我的第一步(脚本)不起作用。

var link = document.getElementsByTagName('link'),
    img = document.getElementsByTagName('img'),
    js = document.getElementsByTagName('script');

function chk_error(e){
    for(var i = 0; i < e.length; i++){
        e[i].onerror = function(){
            alert('Failed.'); // doesn't alert even there's error
        }
    }
}

chk_error(link);
chk_error(img);
chk_error(js);

[].forEach.call(document.querySelectorAll('link, img, script'), function(e){
    e.onerror = function(){
        alert('reload'); // doesn't alert. not working.
    }
});

注意: I don't use jQuery library with this project.

另一种选择是在控制台中访问错误长度,但我不知道如何获取它。我现在不认为这是可能的。

由于某些原因,该项目专注于Google Chrome。

也许有人对我有更好的想法或建议。任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

通过内联onerror =&#34; location.reload()&#34;解决了这个问题。希望img,链接,脚本。我认为它也很有用。所以,如果有人需要相同的功能。我就是这样做的。

<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" onerror="location.reload()">
<img src="images/logo.png" onerror="location.reload();">
<script src="js/tweenmax.js" onerror="location.reload()"></script>

丑陋但它对我有用。如果有人有更好的想法。请回答。谢谢。

编辑2:

[].forEach.call(document.querySelectorAll('link, img, script'), function(e){
    e.setAttribute('onerror', 'location.reload()');
});

比第一个好多了。这仅在脚本位于链接前的头顶时才有效。

答案 1 :(得分:0)

您应该在import tkinter as tk import pandas as pd import sqlite3 root = tk.Tk() class Drag_and_Drop_Listbox(tk.Listbox): """ A tk listbox with drag'n'drop reordering of entries. """ def __init__(self, master, **kw): kw['selectmode'] = tk.EXTENDED tk.Listbox.__init__(self, master, kw) self.bind('<Button-1>', self.setCurrent) self.bind('<B1-Motion>', self.shiftSelection) self.curIndex = None def setCurrent(self, event): self.curIndex = self.nearest(event.y) def shiftSelection(self, event): i = self.nearest(event.y) if i < self.curIndex: x = self.get(i) self.delete(i) self.insert(i+1, x) self.curIndex = i elif i > self.curIndex: x = self.get(i) self.delete(i) self.insert(i-1, x) self.curIndex = i def update_ordering(*args): connect = sqlite3.connect('db.sqlite') cursor = connect.cursor() field_ordering = [(order,fruit) for order,fruit in enumerate(ddlistbox.get(0, 'end'))] print(field_ordering) for field in field_ordering: cursor.execute("UPDATE columns SET 'ordering'="+str(field[0])+" WHERE fruit='"+field[1]+"';") connect.commit() connect.close() print(ddlistbox.curselection()) scrollbar = tk.Scrollbar(root, orient="vertical") ddlistbox = Drag_and_Drop_Listbox(root, yscrollcommand=scrollbar.set, activestyle='none') scrollbar.grid(row=0, column=1, sticky='ns') scrollbar.config(command=ddlistbox.yview) conn = sqlite3.connect('db.sqlite') conn.row_factory = lambda cursor, row: row[0] cursor = conn.cursor() fetch = cursor.execute("SELECT fruit FROM columns ORDER BY ordering ASC").fetchall() for field in fetch: ddlistbox.insert(tk.END, field) ddlistbox.config(width=30) ddlistbox.grid(row=0, column=0) button = tk.Button(root, text='Check', command=update_ordering) button.grid(row=1, column=0) root.mainloop() 调用之前定义错误触发器功能!我的计算机中有两次警报,因为onerrorjs/tweenmax.js不存在。

djffjds.jpg