如何使用javascript / jQuery重新加载该部分?

时间:2019-05-22 16:39:08

标签: javascript jquery html css

我想编写Cookie同意书,并想动态添加一些外部脚本(例如弹出的Faceook Messenger),问题是该脚本仅在页面重新加载(例如location.reload)时运行。有没有一种方法可以动态加载该部分而无需刷新整个页面?

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '//widget.manychat.com/275163679784884.js';
head.appendChild(script);

275163679784884.js包含:

window.mcwidget = {"appId":"532160876956612","pageId":"275163679784884","widgets":[{"widget_id":5851649,"page_id":"275163679784884","widget_type":"customer_chat","status":"active","name":"Growth Tool #4","data":[],"chat_ref":"w5851649"},{"widget_id":5851592,"page_id":"275163679784884","widget_type":"landing","status":"active","name":"Example Landing","data":[]}],"widgetLocale":"en_US","defaultSize":0,"fbSDKVersion":"v3.1"};


(function(d, s, id){
    var host = 'manychat.com/111191';

    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) { return; }
    js = d.createElement(s); js.id = id;
    js.src = '//' + host + '/assets/js/widget.js?' + (Math.round(+new Date/1000/1800));
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'mcwidget-core'));

2 个答案:

答案 0 :(得分:0)

您可以做一件事。用data-src替换脚本的src属性,并根据情况将其动态更改为src。

当您将data-src更改为src时,这将导致脚本被加载。

示例:-

<script data-src="myscript.js">. 

这将停止在页面加载时加载脚本,因为浏览器找不到src属性。当您将其动态更改为src时,脚本将加载并因此完成工作。告诉我它是否做了这项工作。

答案 1 :(得分:0)

该脚本检查DOM中是否存在带有id="mcwidget-core"的元素。如果存在,它不会重新加载代码。我假设它是由小部件在第一次使用时创建的。尝试先删除该元素。

var widget_core = document.getElementById("mcwidget-core");
if (widget_core) {
  widget_core.remove();
}
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= '//widget.manychat.com/275163679784884.js';
head.appendChild(script);