首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Javascript中引用函数的一个问题

关于Javascript中引用函数的一个问题
EN

Stack Overflow用户
提问于 2009-06-01 20:22:17
回答 7查看 301关注 0票数 12

问题:,我有一个内置管理界面的jQuery页面。管理函数只在设置管理变量时触发。这些函数需要第二个库才能正常工作,只有在第一次创建页面时用户是管理员时才会包含第二个文件。函数永远不会为普通用户触发,而普通用户不会获得第二个库的包含。

引用当前包含的文件中不存在的函数是否不好,即使该函数永远不会被调用?(这有道理吗?)

伪码:

标题:(注意不包括admin.js )

代码语言:javascript
运行
复制
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="user.js"></script>

script.js:(引用了管理函数,但无法执行)

代码语言:javascript
运行
复制
admin = false; // Assume this

$(".something").dblclick(function(){
 if(admin)
  adminstuff(); // Implemented in admin.js (not included)
 else
  userstuff();
});

Ideas:我认为可以为用户和管理员使用两个单独的文件,但我觉得这是一个过于复杂的解决方案(不想维护两个只有几行差异的大文件)。我在这个文件中包含一个对admin函数的引用的唯一原因是,我需要将它附加到作为脚本一部分被刷新的页面元素。当jQuery刷新页面时,我需要将函数重新附加到交互式元素。

的问题是:如果用户不使用,我希望保持非常简单,而不必包含文件。这是一个很好的方法,还是我应该走另一条路?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-01 20:31:00

代码的操作应该没有错误,因为没有实现的管理函数将不会被调用。唯一真正浪费的是传输未使用的管理代码的带宽。

然而,请允许我以默默无闻的方式告诫安全。如果用户要查看这段代码,并看到有他们无法访问的管理函数,他们可能会感到好奇,并尝试下载"admin.js“文件并查看这些函数的功能。如果您唯一的阻止管理功能被执行的块是停止包含文件,那么一些狡猾的用户可能会很快找到一种方法来调用管理函数,而他们不应该能够这样做。

如果您已经为管理函数进行了服务器端身份验证/权限检查,只需忽略我的上一段:-)

票数 7
EN

Stack Overflow用户

发布于 2009-06-01 20:35:12

就我个人而言,我会在admin.js中绑定(或重新绑定)事件:

代码语言:javascript
运行
复制
$(function() {

$(".something").dblclick(function(){
  adminstuff();
});

});

function adminstuff()
{
  // ...
}

通过这种方式,adminstuff()调用和函数对“普通”用户是不可见的。

票数 4
EN

Stack Overflow用户

发布于 2009-06-01 20:29:56

问得好。它不应该引起任何JavaScript问题。

其他需要考虑的事情:当你这样做的时候,你可能会把你的管理能力暴露给世界,这对黑客来说可能是有用的。这可能不是什么大问题,但这是值得注意的。

另请参阅:

Why can I use a function before it’s defined in Javascript?

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

https://stackoverflow.com/questions/936580

复制
相关文章

相似问题

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