在基于PHP的网站上,我想在填写简短表单后向用户发送下载包.网站启动的下载应该类似于download.com这样的网站,它们说"你的下载将在一瞬间开始".
我知道的几种可能的方法和浏览器兼容性(基于快速测试):
1)window.open指向新文件.
- FireFox 3 blocks this.
- IE6 blocks this.
- IE7 blocks this.
Run Code Online (Sandbox Code Playgroud)
2)创建指向新文件的iframe.
- FireFox 3 seems to think this is OK. (Maybe it's because I already accepted it once?)
- IE6 blocks this.
- IE7 blocks this.
How can I do this so that at least these three browsers will not object?
Run Code Online (Sandbox Code Playgroud)
额外奖励:有没有一种方法不需要浏览器条件语句?
(我相信download.com有条件地使用这两种方法,但我不能让任何一种方法工作.)
回应和澄清:
Q: "Why not point the current window to the file?"
A: That might work, but in …Run Code Online (Sandbox Code Playgroud) 在回答这个问题时,我确信很多人会反对PHP不是桌面编程的最佳选择,而是会推荐像Ruby或Python这样的东西.我认为讨论原因会很有趣.
除了关于PHP是否总体上是一门好语言的争论之外,您对良好的桌面编程语言(与Web开发相对)的标准是什么?
何时git status发生不同的未合并状态added by us,added by them或者both deleted?
我试图通过执行合并来重现后者,其中文件已在当前和合并分支中删除,但我无法创建此状态.
PHP __autoload()(文档)对我来说非常有趣.以下是它的工作原理:
new Toast_Mitten()(脚注1)__autoload()定义了一个功能." 它运行它.Toast_Mitten到classes/toast_mitten.php并告诉它要求该文件.确实如此.内存优势:您只需加载所需的类.Terseness的好处:您可以停止在任何地方包含这么多文件,只需包含您的自动加载器.
如果事情变得特别有趣
1)您__autoload()可以通过自动方式从类名确定文件路径和名称.例如,也许您的所有课程都在,classes/并且Toast_Mitten将在classes/toast_mitten.php.或者,也许你的名字类,比如Animal_Mammal_Weasel,这将是classes/animal/mammal/animal_mammal_weasel.php.
2)使用工厂方法获取类的实例.
$Mitten = Mitten::factory('toast');
Run Code Online (Sandbox Code Playgroud)
Mitten :: factory方法可以对自己说,"让我们看看,我有一个被调用的子类Toast_Mitten()吗?如果是这样,我会返回它;如果没有,我只会返回一个我自己的通用实例 - 一个标准的手套.哦看!__autoload()告诉我那里是吐司一类特殊的.好了,下面是一个实例!"
因此,您可以在整个代码中开始使用通用的手套,当一天到来时,您需要特殊的toast行为,您只需创建该类和bam! - 您的代码正在使用它.
我的问题是双重的:
1 我向非英语母语人士道歉.这是一个小笑话.据我所知,没有"吐司手套"这样的东西.如果有的话,这将是一个拿起热吐司的手套.也许你在自己的国家有吐司连指手套?
我正在使用Nokogiri来解析一个大型XML文件.说我有以下结构:
<menagerie>
<penguin>Pablo</penguin>
<penguin>Mortimer</penguin>
<bull>Ferdinand</bull>
<aardvark>James Cornelius Madison Humphrey Zophar Handlebrush III</aardvark>
</menagerie>
Run Code Online (Sandbox Code Playgroud)
我可以算这样的非企鹅:
xml.xpath('//menagerie//*[not(penguin)]').length // 2
Run Code Online (Sandbox Code Playgroud)
但是如何获得这样的标签列表呢?(确切的格式并不重要;我只是想直观地扫描非企鹅.)
bull
aardvark
Run Code Online (Sandbox Code Playgroud)
这给了我想要的清单 - 感谢Oded和TMN以及delnan!
xml.xpath('//menageries/*[not(penguin)]').each do |node|
puts node.name()
end
Run Code Online (Sandbox Code Playgroud) 我正在研究一个jQuery插件.当插件运行时,它首先要确定它的设置.它通过采用一些默认设置并使用用户传入的任何内容覆盖部分或全部设置来实现此目的.
这是一个简化版本:
(function( $ ) {
$.fn.somePlugin = function(userOptions) {
// Short name for internal use - exposed below for external modification
var defaults = $.fn.somePlugin.defaults;
// Decide settings
// User settings overrule defaults, but merge both into an empty
// hash so that original defaults hash isn't modified
var settings = $.extend(true, {}, defaults, userOptions);
settings.alerter.call();
// More code, etc.
}
$.fn.somePlugin.defaults = {
name: 'Captain Slappy von Martinez, Esquire, DDS',
favoriteColor: 'red',
alerter: function(){alert("I got bones!");}
}
})( …Run Code Online (Sandbox Code Playgroud) Ruby和Vim都使用"g"和替换命令来表示"所有出现"."g"代表什么?
具体来说,在Ruby中,String类有两个"子"命令:sub将仅替换第一个匹配项,gsub并将替换所有匹配项.例如:
string = "One potato, two potato, three potato, four."
string.sub('potato','banana') # => "One banana, two potato, three potato, four."
string.gsub('potato','banana') # => "One banana, two banana, three banana, four."
Run Code Online (Sandbox Code Playgroud)
类似地,在Vim中,:%s/foo/bar将查看整个文件(这%意味着什么)并且每行替换一个事件,但是:%s/foo/bar/g将在每一行上执行所有事件.
我的猜测是,在这两种情况下,"g"意味着"贪婪",因为Ruby命令和Vim命令都接受正则表达式,但我对贪婪匹配的理解是"匹配符合这些条件的最长子字符串",而不是"匹配尽可能多的子串." (参见" 注意贪婪! ")
我在美国,我们通常将日期格式设置为"月/日/年".我正在努力确保使用Ruby 1.9的Rails应用程序在任何地方都采用这种格式,并按照它在Ruby 1.8下的方式工作.
我知道很多人都有这个问题,所以我想在这里创建一个明确的指南.
特别:
我怎样才能做到这一点?
这是我到目前为止所拥有的.
我有这条线application.rb:
# Format our dates like "12/25/2011'
Date::DATE_FORMATS[:default] = '%m/%d/%Y'
Run Code Online (Sandbox Code Playgroud)
这确保了如果我执行以下操作:
d = Date.new(2011,4,1)
d.to_s
Run Code Online (Sandbox Code Playgroud)
......我得到"04/01/2011",而不是"2011-04-01".
ActiveSupport的String#to_date方法目前看起来像这样(来源):
def to_date
return nil if self.blank?
::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
end
Run Code Online (Sandbox Code Playgroud)
(如果你不遵循这个,第二行创建一个新的日期,按年顺序传递年,月和日.它获取年,月和日值的方式是使用Date._parse,它解析字符串和以某种方式决定这些值是什么,然后返回一个哈希值..values_at按顺序从该哈希值中拉出值Date.new.)
因为我知道我通常会传递像"04/01/2011"或"4/1/2011"这样的字符串,所以我可以通过monkeypatching来解决这个问题:
class String
# Keep a pointer to ActiveSupport's String#to_date
alias_method :old_to_date, :to_date
# Redefine it as follows
def to_date
return nil if self.blank?
begin
# …Run Code Online (Sandbox Code Playgroud) 对于小型开发人员文档应用程序,我想设置一个Sinatra应用程序来提供HAML文件.在CSS文件和图像的路由之后,我想要一条尝试为您请求的任何路径加载HAML文件的路由.
例如:
/index加载views/index.haml,如果存在的话/this/page/might/exist加载views/this/page/might/exist.haml,如果存在的话我该如何指定这条路线?
在我的nanoc网站中,我想使用SCSS指定我的样式:
p {
em {
color: red;
}
}
Run Code Online (Sandbox Code Playgroud)
......不是SASS:
p
em
color: red
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用SCSS,我会从SASS过滤器中收到编译错误.如何使用SCSS?