如何限制调用 js 追加功能两次
How to restrict calling js appending functionality twice
我需要动态附加css和js文件,并且使用以下方法
document.getElementsByTagName('head')[0].appendChild();
此方法不允许第二个参数。我必须动态附加 css 和 js 文件。我调用上述方法两次来附加文件。任何其他将上述方法限制为仅调用一次的通用方法。
这是我尝试过的:
var jscss = function(cp, sp){
var css = document.createElement("link");
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
css.setAttribute("href", cp);
document.getElementsByTagName('head')[0].appendChild(css);
var script = document.createElement('script');
script.src = sp;
document.getElementsByTagName('head')[0].appendChild(script);
};
jscss();
好吧,我认为您可以通过向元素提供 id 并在附加它之前检查该元素是否存在来实现它。例:
var jscss = function(cp, sp){
if(!document.getElementById("customStyleSheet")){
var css = document.createElement("link");
css.setAttribute("rel", "stylesheet");
css.setAttribute("id", "customStyleSheet");
css.setAttribute("type", "text/css");
css.setAttribute("href", cp);
document.getElementsByTagName('head')[0].appendChild(css);
}
if(!document.getElementById("customScript")){
var script = document.createElement('script');
script.src = sp;
script.id = "customScript";
document.getElementsByTagName('head')[0].appendChild(script);
}
};
jscss();
希望这对你有所帮助:)
您可以使用文档片段,以便只需要调用 appendChild 一次即可添加两个元素:
var jscss = function(cp, sp){
var fragment = document.createDocumentFragment();
var css = document.createElement("link");
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
css.setAttribute("href", cp);
fragment.appendChild(css);
//Does not affect the DOM
var script = document.createElement('script');
script.src = sp;
fragment.appendChild(script);
//Does not affect the DOM
document.getElementsByTagName('head')[0].appendChild(fragment);
//Adds both elements to the DOM
};
jscss();
使用变量来记住函数是否已经运行。
var jscss_run = false;
function jscss(cp, sp) {
if (jscss_run) {
return; // don't run a second time
}
jscss_run = true;
// do all the real work
}
相关文章:
- 当使用jquery live功能时,按钮将被触发两次
- 必须点击两次按钮才能执行功能
- 按钮点击功能启动两次
- 我需要运行此功能两次
- 必须单击按钮两次才能执行功能 - jQuery
- D3.js键功能在简单的选择器/数组组合上运行两次
- 如何限制调用 js 追加功能两次
- Jquery点击功能只工作两次
- slideDown功能需要两次点击才能工作
- Meteor功能执行了两次
- Rest.next()?我的点击功能添加'.活动'两次
- jQuery -必须按下按钮两次或更多次,使功能坚持
- 两次相同的onclick功能-只有一个工作
- 切换功能需要两次点击
- 当点击一个按钮两次时,多个功能
- 必须点击两次切换在1个功能;可以点击一次在另一个
- jQuery按钮,需要点击两次才能实现功能
- 为什么Save按钮需要点击两次才能点击相关功能?
- 为什么这个功能只有在点击两次后才能登录到控制台
- Ajax无限滚动功能触发两次