小编Rad*_*dek的帖子

即使弹出窗口被阻止,热键插件也会打开新窗口?

如果按下"F2",我想打开新窗口.下面的代码newWindow is null在firefox中给出了错误信息.如果我不使用弹出窗口阻止程序,它可以工作.在IE中也一样.即使弹出窗口阻止器,它也可以在chrome中工作.

使用jstree pre 1.0 stable

            hotkeys: {
                "f3" : function () {
                url = "http://www.vse.cz";
                var newWindow = window.open(url, '_blank');
                newWindow.focus();
                return false;

            },
Run Code Online (Sandbox Code Playgroud)

Q1:我可以让它适用于所有浏览器,因此用户在使用热键插件时无需更改设置吗?

Q2:为什么使用JavaScript代替目标打开新窗口在Firefox中没有任何麻烦?这是因为它是一个链接,而不是使用热键插件?


我的理解是,上面的脚本以某种方式操纵用户点击链接时会发生什么.它改变了点击的属性,因此浏览器"不知道"它是新窗口,因此绕过了弹出窗口阻止程序.

在我的情况下,我使用由其他东西触发的纯js函数,而不是用户点击.并且'我的函数'不会更改任何html对象的属性.我认为这是不同的.我不确定我是不是在这里.

javascript jquery jstree

5
推荐指数
1
解决办法
1063
查看次数

如何在ruby中使用%格式化字符串输出?

我想格式化ruby中字符串的输出.我可以用%来做,但我无法弄清楚.

而不是201107070928我想输出2011\07\070928

puts "%.4s\\%.2s\\%s" % "201107070928"
Run Code Online (Sandbox Code Playgroud)

给我一个错误:'%':参数太少(ArgumentError)

ruby string-formatting

5
推荐指数
2
解决办法
1万
查看次数

如何将svn提交为不同的用户?

我通过检查了我的代码库

'svn co svn+ssh://radek@repository.server.com/var/lib/svne2/edumate2/trunk/ trunk/'

我写了一些小的web应用程序来做合并并检入代码库,它运行良好.现在我想让开发人员使用这个应用程序.现在所有提交都是以我的名义提出的.

如何在不同的svn用户下进行提交?

我尝试过svn --username kon ci -m 'EDU-8319 into trunk' /srv/www/htdocs/merging/trunk,但是以我的名义成功提交.svn没有显示任何错误,也没有要求kon的密码.

svn

5
推荐指数
1
解决办法
2万
查看次数

如何打破常规'eachFileMatch()'

我有一个工作脚本,列出目录中的所有pdf文件.它按预期工作,但我需要的只是第一个pdf文件的文件名.然后我想打破,eachFileMatch()因为目录中可能有数千个pdf文件.

我尝试使用find从这个休息从groovy每个闭包答案之后,eachFileMatch().find但没有工作Caught: groovy.lang.MissingMethodException: No signature of method: java.io.File.eachFileMatch() is applicable for argument types: (java.util.regex.Pattern) values: [.*.(?i)pdf]

        def directory="c:\\tmp"   // place 2 or more pdf files in that
                                  // directory and run the script
        def p =  ~/.*.(?i)pdf/
        new File( directory ).eachFileMatch(p) { pdf ->
                println pdf // and break
        }
Run Code Online (Sandbox Code Playgroud)

谁能让我知道怎么做?

regex groovy

5
推荐指数
1
解决办法
6533
查看次数

使用Ruby/Mechanize(和Nokogiri)从HTML中提取单个字符串

我正从论坛中提取数据.我的脚本基于工作正常.现在我需要从单个帖子中提取日期和时间(2009年12月21日,20:39).我无法让它发挥作用.我使用FireXPath来确定xpath.

示例代码:

 require 'rubygems'
 require 'mechanize'

   post_agent = WWW::Mechanize.new
    post_page = post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')
    puts  post_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]/text()').to_s.strip
    puts  post_page.parser.at_xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]/text()').to_s.strip
    puts post_page.parser.xpath('//[@id="post1960370"]/tbody/tr[1]/td/div[2]/text()')
Run Code Online (Sandbox Code Playgroud)

我的所有尝试都以空字符串或错误结束.


我找不到有关在Mechanize中使用Nokogiri的任何文档.Mechanize文档在页面底部显示:

使用Mechanize导航到需要刮擦的页面后,使用Nokogiri方法刮取它.

但有什么方法呢?我在哪里可以通过样本和解释语法阅读它们?我也没有在Nokogiri的网站上找到任何东西.

ruby parsing information-extraction nokogiri

4
推荐指数
2
解决办法
2万
查看次数

机械化和重定向(红宝石)

我认为机械化默认遵循重定向...我的脚本在重定向页面结束.我怎么处理这个?

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new 

page = agent.get("http://www.vbulletin.org/forum/index.php")

login_form = page.form_with(:action => 'login.php?do=login')

login_form['vb_login_username'] = 'user name'
login_form['vb_login_password'] = ''
login_form['vb_login_md5password_utf'] = 'md5 hash from the password'
login_form['vb_login_md5password'] = 'md5 hash from the password'

page = agent.submit login_form

#Display welcome message if logged in
puts page.parser.xpath("/html/body/div/table/tr/td[2]/div/div").xpath('text()').to_s.strip

output = File.open("login.html", "w") {|f| f.write(page.parser.to_html) }
Run Code Online (Sandbox Code Playgroud)

重定向页面html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head>
<body>
<noscript>

    <meta http-equiv="Refresh" content="2; URL=http://www.vbulletin.org/forum/index.php">
</noscript> …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems mechanize

4
推荐指数
1
解决办法
7628
查看次数

如何通过三个或更多元素(ruby)对数组进行排序

我有14列的csv文件,我想在红宝石中按第6列排序,然后排在第2列,然后排在第11列.

有很好的方法.sort_by但它只适用于两列,不是吗.并array_of_arrays.sort_by {|e| [e[2], e[0],e[1]],}不起作用.

所以让我们说在下面的示例中我希望它按第3列,第1列,第2列排序

array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,'b'], [1,3,'a'], [2,1,'b']]

array_of_arrays.each {|line| puts line.inspect }
puts
array_of_arrays.sort_by {|e| [e[2], e[0]]} .each {|line| puts line.inspect }
Run Code Online (Sandbox Code Playgroud)

但结果并不理想

[1, 9, "a"]
[2, 2, "a"]
[2, 6, "b"]
[1, 3, "a"]
[2, 1, "b"]

[1, 9, "a"]
[1, 3, "a"]
[2, 2, "a"]
[2, 6, "b"]
[2, 1, "b"]
Run Code Online (Sandbox Code Playgroud)

ruby arrays sorting

4
推荐指数
1
解决办法
2831
查看次数

数组sort_by与nil元素(ruby)

我有代码按我想要的方式排序.由多个领域.凉.但现在我意识到有时元素可能是零.

Q1:任何想法如何设法在搜索的顶部获得零值?并摆脱此错误消息:in "<=>": undefined method "<=>" for nil:NilClass (NoMethodError)

Q2:在下面的代码中我按3个元素排序可以通过e [2]以某种方式定义asc,按e [0]和asc按e [1].我正在排序csv文件,大多数字段将是文本字段.

array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,''], [1,3,'a'], [2,1,'']] #doesnt work
array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,'b'], [1,3,'a'], [2,1,'b']] # works
array_of_arrays.each {|line| p line }
puts
array_of_arrays.sort_by {|e| [e[2], e[0], e[1]]} .each {|line| p line }
Run Code Online (Sandbox Code Playgroud)

ruby arrays sorting

4
推荐指数
1
解决办法
3110
查看次数

文件/文件夹名称的无效字符过滤器?(红宝石)

我的脚本从网上下载文件,然后将它们保存在从同一个Web服务器获取的名称下.我需要在Windows NTFS下为文件/文件夹名称过滤 /删除无效字符.

我也很乐意使用多平台过滤器.

注意:类似的东西htmlentities会很棒....

ruby filenames

4
推荐指数
2
解决办法
5527
查看次数

比较除了元素x,y,z(ruby)之外的两个数组

还有其他simple,nicer方法吗?

require 'pp'

a1 = ["02/28/10","Webinars","131","0","26 Feb 2010","0","3d, 8h, 49m, 18s"]
a2 = ["02/20/10","Webinars","131","9","26 Feb 2010","0","3d, 8h, 49m, 18s"]

def compare(array1,array2,ignore)

  tmp1 = Array.new
  tmp2 = Array.new
  0.upto(array1.length-1) {|index|
    if !ignore.include?(index)
      tmp1 << array1[index]
      tmp2 << array2[index]
    end
  }
  if tmp1 == tmp2 
    return true
  else
    return false    
  end
end

pp a1
pp a2
puts
puts compare(a1,a2,[0,3])
Run Code Online (Sandbox Code Playgroud)

而输出是

["02/28/10", "Webinars", "131", "0", "26 Feb 2010", "0", "3d, 8h, 49m, 18s"]
["02/20/10", "Webinars", "131", "9", "26 Feb 2010", "0", …
Run Code Online (Sandbox Code Playgroud)

ruby arrays comparison

4
推荐指数
1
解决办法
1077
查看次数