- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
这用于 http://cssfingerprint.com 的研究目的
考虑以下代码:
<style>
div.csshistory a { display: none; color: #00ff00;}
div.csshistory a:visited { display: inline; color: #ff0000;}
</style>
<div id="batch" class="csshistory">
<a id="1" href="http://foo.com">anything you want here</a>
<a id="2" href="http://bar.com">anything you want here</a>
[etc * ~2000]
</div>
我的目标是检测 foo 是否已使用 :visited 样式呈现。
我想检测是否访问了 foo.com 而不直接查看 $('1').getComputedStyle
(或在 Internet Explorer 中,currentStyle
),或该元素上的任何其他直接方法。
这样做的目的是绕过潜在的浏览器限制,该限制会阻止直接检查所访问链接的样式。
例如,也许您可以在 <a>
中放置一个子元素标记,或直接检查文本的样式;等等。任何不直接或间接依赖$('1').anything
的方法是可以接受的。可能有必要与 child 或 parent 一起做一些聪明的事情。
请注意,仅出于这一点的目的,场景是浏览器将对 <a>
的所有属性向 JavaScript 撒谎。元素(但不是其他元素),它只会呈现 color:
在 :visited
.因此,依赖于例如的方法文字大小或 background-image
将不满足此要求。
我想提高当前抓取方法的速度。
大部分时间(至少使用 Firefox 中的 jQuery 方法)花在 document.body.appendChild(batch)
上。 ,因此找到一种方法来改进该调用可能是最有效的。
参见 http://cssfingerprint.com/about和 http://cssfingerprint.com/results获取当前速度测试结果。
我目前使用的方法可以看http://github.com/saizai/cssfingerprint/blob/master/public/javascripts/history_scrape.js
总而言之,它们是:
getComputedStyle
<a>
中标记,并使用 jQuery 的 :visible 选择器,仅提取可见文本(= 已访问的链接 ID)FWIW,我是 white hat ,我正在与 EFF 协商后这样做和其他一些相当知名的安全研究人员。
如果您贡献新方法或加速,您将在 http://cssfingerprint.com/about 得到感谢(如果你想成为 :-P),并有可能在未来发表的论文中。
预计到达时间:赏金将仅针对以下建议给予奖励
如果有多个建议符合任一标准,则最佳建议获胜。
预计到达时间 2:我添加了两种先前最佳测试方法的基于宽度的变体(reuse_noinsert,最适合 Firefox/Mozilla,以及 mass_insert,其非常接近的竞争对手)。请访问http://cssfingerprint.com多次来自不同的浏览器;我会自动获得速度测试结果,所以我们会发现它是否比以前的方法更好,如果好的话,好多少。谢谢!
预计到达时间 3:当前测试表明使用 offsetWidth
可以节省速度(而不是 getCalculatedStyle
/currentStyle
)在 Chrome 中为 ~2ms (1.8%),在 Firefox 中为 ~24ms (4.3%),这不是我想要的 10% 以获得可靠的赏金。知道如何勉强维持剩下的 10% 了吗?
最佳答案
[新更新]
如果您只想将结果用于视觉呈现,那么最快的方法是使用 CSS 计数器。
CSS:
body{
counter-reset: visited_counter;
}
a:visited{
counter-increment: visited_counter;
}
#results:before{
content:counter(visited_counter);
}
这会在 ID 为“results”的元素之前添加访问过的链接数。
不幸的是,无法从 JavaScript 访问它,您只能显示它..
[初始答案]
你知道 jQuery 直接支持 :visited
选择器吗?
点赞$('a:visited')
[更新]
作为替代方案,您可以应用不依赖于 getComputedStyle
的 CSS 属性来检索..
喜欢a:visited{height:1px;display:block;}
然后检查offsetHeight
。
关于javascript - CSS/JavaScript/黑客攻击 : Detect :visited styling on a link *without* checking it directly OR do it faster than me,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394890/
这个问题在这里已经有了答案: What's the proper value for a checked attribute of an HTML checkbox? (10 个答案) 关闭 8 年
我使用这个制作了自定义复选框: enter link description here 也可在 stackoverflow 上获得:enter link description here 但我正在尝试
我需要使用 CSS“checkbox-hack”来实现滑动菜单指示器效果,我唯一的方法是通过 JavaScript 附加输入元素。我被迫通过在线工具 MonoSolutions 执行此操作,并且我受到
此代码运行良好,但缺少一些我需要的东西。基本上,如果输入有一个 checked="checked" 属性,它应该使其他两个元素保持禁用状态。如果未选中,则元素已启用。 这是我在 jsFiddle 上的
当我的人 checkout 文件时,我希望他们将其锁定,以便其他人也无法进行更改,我从这篇文章中看到:http://msdn.microsoft.com/en-us/library/jj155783.
请告诉我这些函数的作用。 最佳答案 这些是基于框架的、与语言无关的方法,用于在 .NET 中定义代码契约。虽然某些语言(如 spec# 和 Delphi Prism)对代码契约具有一流的语言支持,但这
假设以下场景:您有 2 个单选按钮,它们具有相同的名称,并且都被选中(我知道这是无效的): 为什么下面两个选择器的行为不同? $('.input:checked').size(); // retu
我正在尝试收听广播。以下均不起作用: [编辑] $('selector').attr('checked','checked'); $('selector').attr('checked',true);
我实际上在努力理解此类型错误。 任何人都知道我如何更正代码?谢谢 CheckIn checkin1 = new CheckIn(location1, dt); CheckInMonths checkI
我有这段代码,但不起作用。 .on("click","span.name", function selectThisName(e) { if (e.altKey) {
我现在是 Espresso 的新手,我遇到了这个异常: android.support.test.espresso.AmbiguousViewMatcherException: 'with id: a
我已经创建了一个基本的 2 单选按钮表单,如下面的示例所示。 观察浏览器渲染,我们看到元素 1 被选中。我们检查元素 1 和元素 2。 当我点击元素 2 时,我希望元素 1 的 checked=che
我在查找以下 jquery/checkbox 行为的原因时遇到问题。 $( this.obj + ' table.sgrid-content > thead > tr > th > input.sel
以下逻辑应用在上午 10 点触发并运行 SQL Server 查询。从图片中可以看出,结果集是空的。 条件检查检查查询的结果集是否为空。 (第二张图) 这仍然如何转化为 True?结果显然是空的。 最
我想知道哪种操作更快: int c = version1.compareTo(version2); 这个 if (c == 1) 或者这个 if (c > 0) 符号比较是否只使用一位检查,而相等比较
我有一个包含大约 100 个问题的表单,每个问题都有一个单选按钮和一些复选框,因此我需要用户能够保存表单并在以后加载它。我还需要检查用户在此 session 中更改了哪些。 本题解决问题:How ca
我正在编写一个小程序,需要用户决定一些 bool 值。我已经制作了复选框来处理这一部分,但问题是每次我选中或取消选中一个复选框时,所有其他复选框都会跟随。 我在网上搜索过,但我找到的唯一解释( pyt
我有以下代码片段(我使用的是 jQuery 1.4.2): $.post('/Ads/GetAdStatsRow/', { 'ad_id': id }, function(result) {
我的代码发生了一些奇怪的事情。我有两个按钮,其中一个带有 .add 和 .remove 类,有一个复选框会根据按下哪个按钮而打开和关闭,因此如果您使用删除按钮删除,则选中的复选框将被选中,否则复选框将
我陷入了一种情况,我必须通过“选中”工具栏中的复选框来“选中”列表中存在的所有复选框。 这是创建复选框列表的代码:- itemTpl: 'checked="checked" /> {groupName
我是一名优秀的程序员,十分优秀!