我想知道是否可以在浏览器中运行JavaScript沙箱,以防止访问HTML页面中运行的JavaScript代码通常可用的功能.
例如,假设我想为最终用户提供一个JavaScript API,让他们定义在"有趣事件"发生时运行的事件处理程序,但我不希望这些用户访问该window
对象的属性和功能.我能做到吗?
在最简单的情况下,假设我想阻止用户呼叫alert
.我能想到的几种方法是:
window.alert
全球重新定义.我不认为这是一种有效的方法,因为在页面中运行的其他代码(即用户在其事件处理程序中未编写的内容)可能想要使用alert
.也许服务器处理用户定义的函数然后生成要在客户端上执行的回调的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?
我一直在尝试使用Firebug的分析器来更好地理解我们看到的一些JavaScript性能问题的来源,但我对输出有点困惑.
当我分析一些代码时,探查器报告Profile(464.323 ms,26,412个呼叫).我怀疑464.323 ms是这些26,412次调用的执行时间的总和.
但是,当我深入查看详细结果时,我会看到平均执行时间大于464.323 ms的单个结果,例如,平均时间最长的结果会报告以下详细信息:
Calls: **1**
Percent: **0%**
Own Time: **0.006 ms**
Time: **783.506 ms**
Avg: **783.506 ms**
Min: **783.506 ms**
Max: **783.506 ms**
Run Code Online (Sandbox Code Playgroud)
另一个结果报告:
Calls: **4**
Percent: **0.01%**
Own Time: **0.032 ms**
Time: **785.279 ms**
Avg: **196.32 ms**
Min: **0.012 ms**
Max: **783.741 ms**
Run Code Online (Sandbox Code Playgroud)
在这两个结果之间,时间结果的总和远远大于464.323.
那么,这些不同的数字是什么意思呢?我应该相信哪些?
我想为用户提供resizing textarea控件.我已经给了这个去看看其他一些实现,但我似乎找不到满足我所有要求的实现.具体来说,我想要一个控件:
我看到的最接近这种功能的是Facebook的状态更新字段,它是作为内容可编辑的div元素实现的,但我对使用这样的元素有一些保留,因为使用div意味着:
我上面列出的内容代表了"最终调整文本区域" - 解决了我认为现有方法存在的问题.这样的控制存在吗?是否可以编写这样的控件?
在Java中,我可以编写一个非常基本的JSP,index.jsp
如下所示:
<% request.getRequestDispatcher("/home.action").forward(request, response); %>
这样做的结果是请求index.jsp
(或只是包含目录假设index.jsp
是目录的默认文档)的用户将看到home.action
没有浏览器重定向,即[转发](http://java.sun.com/javaee/5 /docs/api/javax/servlet/RequestDispatcher.html#forward(javax.servlet.ServletRequest,%20javax.servlet.ServletResponse))发生在服务器端.
我可以用PHP做类似的事吗?我怀疑可以配置Apache来处理这种情况,但由于我可能无法访问相关的Apache配置,所以我会对依赖于PHP的解决方案感兴趣.