Альтернативный способ написания document.write () - PullRequest
1 голос
/ 02 июля 2019

Есть ли альтернативный способ написания document.write () для этого?

Я не знал, что это плохо, и я только начал изучать JavaScript, поэтому я до сих пор не знаю,много вещей об этом.

Не могли бы вы помочь мне исправить это?

if (thisUrl.indexOf("?q=") == -1 && thisUrl.indexOf(".html") == -1) {
    if (thisUrl.indexOf("/search/label/") == -1) {
        currentPage = "page";
        if (urlactivepage.indexOf("#PageNo=") != -1) {
            currentPageNo = urlactivepage.substring(urlactivepage.indexOf("#PageNo=") + 8, urlactivepage.length)
        } else {
            currentPageNo = 1
        }
        document.write("<script src=\"" + home_page + "feeds/posts/summary?max-results=1&alt=json-in-script&callback=totalcountdata\"><\/script>")
    } else {
        currentPage = "label";
        if (thisUrl.indexOf("&max-results=") == -1) {
            perPage = 20
        }
        if (urlactivepage.indexOf("#PageNo=") != -1) {
            currentPageNo = urlactivepage.substring(urlactivepage.indexOf("#PageNo=") + 8, urlactivepage.length)
        } else {
            currentPageNo = 1
        }
        document.write('<script src="' + home_page + 'feeds/posts/summary/-/' + postLabel + '?alt=json-in-script&callback=totalcountdata&max-results=1" ><\/script>')
    }

Ответы [ 3 ]

4 голосов
/ 02 июля 2019

В вашем случае вам нужно только добавить скрипт на страницу. Вы можете сделать это, используя DOM Manipulations

var script = document.createElement('script');
script.src = home_page + 'feeds/posts/summary?max-results=1&alt=json-in-script&callback=totalcountdata';
document.body.appendChild(script);
0 голосов
/ 02 июля 2019

Вместо этого используйте метод document.createElement . Для удобства вы можете обернуть его в функцию. Например:

if (thisUrl.indexOf("?q=") == -1 && thisUrl.indexOf(".html") == -1) {
    if (thisUrl.indexOf("/search/label/") == -1) {
        currentPage = "page";
        if (urlactivepage.indexOf("#PageNo=") != -1) {
            currentPageNo = urlactivepage.substring(urlactivepage.indexOf("#PageNo=") + 8, urlactivepage.length)
        } else {
            currentPageNo = 1
        }
        createScript(home_page + "feeds/posts/summary?max-results=1&alt=json-in-script&callback=totalcountdata")
    } else {
        currentPage = "label";
        if (thisUrl.indexOf("&max-results=") == -1) {
            perPage = 20
        }
        if (urlactivepage.indexOf("#PageNo=") != -1) {
            currentPageNo = urlactivepage.substring(urlactivepage.indexOf("#PageNo=") + 8, urlactivepage.length)
        } else {
            currentPageNo = 1
        }
        createScript(home_page + 'feeds/posts/summary/-/' + postLabel + '?alt=json-in-script&callback=totalcountdata&max-results=1')
    }

}

function createScript(src){
    var script = document.createElement('script');
    script.src = src;
    document.head.appendChild(script);
}

Если вы действительно оказались в ситуации, когда вам нужно быстро добавить HTML, например, с помощью document.write, вы можете вместо этого использовать метод jQuery.append . В наши дни jQuery часто не нужен и имеет свои недостатки, но в этом случае он все же намного лучше, чем использование document.write

0 голосов
/ 02 июля 2019

Я не знаю, ищите ли вы это, но вы можете использовать document.createElement('script') для создания элемента DOM, установить его свойство src и затем использовать document.head.appendChild(yourObj)

...