Discuss / JavaScript / 修复head内script不断增长

修复head内script不断增长

Topic source

jinglepper

#1 Created at ... [Delete] [Delete and Lock User]
function refreshPrice(data) {
    let p = document.getElementById('test-jsonp');
    p.innerHTML = '当前价格:' +
        data['0000001'].name + ': ' +
        data['0000001'].price + ';' +
        data['1399001'].name + ': ' +
        data['1399001'].price;
}
function checkInHead(x) {
    head = document.getElementsByTagName('head')[0];
    for (let j of head.children) {
        if (j.tagName === 'SCRIPT') {
            if (x.src === j.src) {
                return true;
            }
        }
    }
    return false;
}
function getPrice() {
    let
        js = document.createElement('script'),
        head = document.getElementsByTagName('head')[0];
    js.src = 'http://api.money.126.net/data/feed/0000001,1399001?callback=refreshPrice';
    if (!checkInHead(js)) {
        head.appendChild(js);
    }
}

kongchenglc

#2 Created at ... [Delete] [Delete and Lock User]

这样应该就不能刷新了,下边有位兄弟写的删除旧节点感觉应该更靠谱

viper1090

#3 Created at ... [Delete] [Delete and Lock User]

给?

Pengtap6

#4 Created at ... [Delete] [Delete and Lock User]

这样会更简洁点: function getPrice() {

if(!document.getElementById('1')) {
var
    js = document.createElement('script'),
    head = document.getElementsByTagName('head')[0];
js.id = '1';
js.src = 'http://api.money.126.net/data/feed/0000001,1399001?callback=refreshPrice';


head.appendChild(js);}

}

Pengtap6

#5 Created at ... [Delete] [Delete and Lock User]

还有上面说到的删除节点的方法,可以直接在var下面加一条head.removeChild(document.getElementById('1'));js.id = '1';就行了

Pengtap6

#6 Created at ... [Delete] [Delete and Lock User]

上面那个弄错了,这个才对 if(document.getElementById('1'))head.removeChild(document.getElementById('1'));


  • 1

Reply