Javascript JS文件选择性加载

Javascript JS文件选择性加载,javascript,jquery,html,contextmenu,Javascript,Jquery,Html,Contextmenu,我和他一起工作,而且大部分工作都很好。从技术上讲,当页面上要做的事情负载较低时,它仍然可以正常工作,但当页面上也加载了表单时,就有发生此错误的风险: TypeError: $(...).contextMenu is not a function 并不是说它还没有加载。我可以等待很长时间,并试图添加上下文菜单,但我仍然得到错误。这似乎是随机发生的,尽管某些页面比其他页面更容易出错,但我可以加载页面10次,其中9次出现错误。其他页面我将从十次中找出一次错误。本质上,有时它看不到contextMen

我和他一起工作,而且大部分工作都很好。从技术上讲,当页面上要做的事情负载较低时,它仍然可以正常工作,但当页面上也加载了表单时,就有发生此错误的风险:

TypeError: $(...).contextMenu is not a function
并不是说它还没有加载。我可以等待很长时间,并试图添加上下文菜单,但我仍然得到错误。这似乎是随机发生的,尽管某些页面比其他页面更容易出错,但我可以加载页面10次,其中9次出现错误。其他页面我将从十次中找出一次错误。本质上,有时它看不到contextMenu函数,有时它会看到

我已经讨论了加载顺序,jquery是第一个加载的东西,我仍然可以在文档的其余部分使用jquery,所以我认为jquery没有问题。我不知所措,有什么想法吗

这是我的密码:

function createSavedReportsMenu(name, location, report, fileNumber){
// creates the popup menu for the saved reports area

var menu = [{  //begin first item on the pop up menu
    name: 'Run Report', // the name that is displayed for the first button
    img: '/Reports/images/run.png', // display an image
    title: 'run button', // mouse over text
    fun: function () {
       //do something
    }
}, {
    name: 'Load Parameters',
    img: '/Reports/images/load.png',
    title: 'load button',
    fun: function () {
        //do something
    }
}, {
    name: 'Rename Report',
    img: '/Reports/images/rename.png',
    title: 'rename button',
    fun: function () {
        //do something
    }
}, {
    name: 'Delete',
    img: '/Reports/images/delete.png',
    title: 'delete button',
    fun: function () {
          //do something
    }
}];
var reportDiv = "#file" + fileNumber;
try{
$(reportDiv).contextMenu(menu);
}catch(err){
    alert(err);
}

}

您如何使用该功能?是使用
$(document.ready()
还是
$(window.load()
)?我打赌您正在加载多个jQuery副本,而第二个副本会清除所有插件。有些脚本喜欢加载自己的jQuery副本,这可能会有问题,尤其是当它们加载一个旧的副本时。@ntgCleaner否,contextMenu被添加到动态生成的列表项中,因此在加载文档或窗口时,我无法运行代码,它必须在我获取文件列表并显示数据后完成。@dandavis如果这是个问题,它不是每次都会失败,而不是只在某些时候失败吗?此外,它似乎没有包含自己的JS文件,所有其他插件都在工作。一些脚本在加载之前只会询问(!window.jQuery),因此如果jq当时没有加载(但已被调度),则可能发生这种情况。它取决于绑定、延迟/异步属性、脚本加载程序、远程超时和大量其他边缘情况。我只是建议一件事,它可能会导致你描述的症状;jQuery已加载,但插件未加载,但插件仍在devtools网络选项卡中可见