首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止django管道中javascript函数的名称损坏

如何防止django管道中javascript函数的名称损坏
EN

Stack Overflow用户
提问于 2016-03-23 12:11:53
回答 2查看 408关注 0票数 0

我正在使用django版本1.82与django-管道。我从html中按名称调用特定的javascript函数。

代码语言:javascript
复制
 <form class="navbar-form navbar-right vcenter" 
 action="javascript:search();" role="search" id='searchform'>

不幸的是,在压缩的js文件中,函数的名称发生了更改,因此前端功能无法工作。如何维护该函数的相同名称,或者如何在html中更改对js函数的引用?

我已经安装了yuglify,我使用的设置是

代码语言:javascript
复制
PIPELINE_CSS = {
'allstyles': {
    'source_filenames': (
      'css/application.css',
      'feedback/css/feedback-form.css',
    ),
    'output_filename': 'css/nifty.css',
    'extra_context': {
        'media': 'screen,projection',
    },
},
}

PIPELINE_JS = {
'actions': {
    'source_filenames': (
      'js/nifty.js',
      'feedback/js/feedback-form.js',
    ),
    'output_filename': 'js/nifty.js',
}
}
STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'
PIPELINE_DISABLE_WRAPPER = True
PIPELINE_ENABLED=True 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 12:30:09

您确定search()是一个全局函数吗?要确保可以将其赋值给window变量,请执行以下操作:

代码语言:javascript
复制
window.search = function() {
    ...
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-23 12:42:40

我会用相反的方式做。

代码语言:javascript
复制
<form ... action="/nojs.html" ... id='searchform'>

然后拦截表单上的submit事件。

代码语言:javascript
复制
(function(){
    var sf = document.getElementById('searchform');
    sf.addEventListener('submit', function(ev){
        ev.preventDefault();
        // do here whatever "search()" needs to do
    });
})();

这样,您就不需要向window命名空间中添加任何内容,而是独立于小型化的函数名,禁用JS的浏览器将获得一个可读的错误页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36177868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档