我正在构建一个用于教育目的的网站。我知道robots.txt可以用来允许或禁止用户代理,查询和目录访问。现在我在一个页面中有一个画布元素,只需要使用特定的用户代理来访问该页面。否则它应该抛出一个错误信息。这可能吗?将一个HTML元素添加到robots.txt
回答
你必须用Javascript来做到这一点。
window.navigator.userAgent
然后,您可以选择显示或不显示相应的canvas元素:
您可以通过获取浏览器的用户代理。你不会直接访问你的robots.txt
,除非你把它包含在JS中。
的的robots.txt文件适用于搜索引擎和其他网络抓取工具,而不是为普通用户。这听起来像你想瞄准后者,这使得robots.txt不适合这项任务。 (此外:即使您的目标是网页抓取工具,也不可能)。
您必须使用不同的方式来“嗅探”用户的浏览器类型。 JavaScript当然是一个很好的可能性。如果你打算在服务器上执行更复杂的脚本(PHP等),你可以使用这些语言为不同的浏览器提供不同的内容。网络充满了对你有帮助的教程。
您已经描述了robots.txt
的用途。它的链接列表必须被忽略,并且不会被webcrawlers索引,这是它的目的。但是,在网页上,您可以使用JavaScript来确定具有navigator.userAgent属性的用户代理。
根据您的实现,您可以隐藏<canvas>
元素,并在运行时用一个简单的逻辑是这样检查您的user-agent:
if (window.navigator.userAgent == 'SpecificUserAgent/32')
$("#special-canvas").show();
else
alert("Please come back later with another user-agent.");
现在,唯一的问题仍然是你的“特定用户代理“实际上看起来像。典型的浏览器的用户代理包含一个复杂的积聚:
Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/39.0
Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16
所以,如果你想显示你的画布只有后者,你可能需要一个regular expression:
if(/Chrome\/43/.test(window.navigator.userAgent))
alert("only if user agents contains 'Chrome/43'.");
最后,是Firefox的其他浏览器,例如User Agent Switcher的插件,可让您切换用户代理。您的浏览器当前的浏览器可以很容易地在sites that display your UA或使用alert(window.navigator.userAgent);
。
我试过这个。我为谷歌浏览器安装了User-Agent Switcher。尝试了自定义和给定的用户代理。当我使用这个代码时,我总是会得到“未知浏览器”。 功能测试(){ \t \t \t if(window.navigator。userAgent ==“iPad”){ \t \t \t \t alert('iPad Detected'); \t \t \t} \t \t \t其他{ \t \t \t \t警报( '未知的浏览器'); \t \t \t} \t \t} 我这么想吗? –
iPad的用户代理更为复杂(例如,请参阅[本答案](http://stackoverflow.com/a/2248420/2083613)),它不会只是“iPad”。立即修复将是'if(window.navigator.userAgent.indexOf('iPad')> -1)'。 – dakab
iPad只是一个例子,我试过opera,也就是说,firefox,custom总是返回false –
- 1. 将一个类添加到“this”元素
- 2. 将一个事件添加到元素
- 3. 将元素添加到一个的NSArray
- 4. 将类添加到html元素动态
- 5. Chrome将cssClass添加到HTML元素
- 6. 将html类添加到tinymce td元素
- 7. 将SVG元素添加到html文件?
- 8. 将HTML元素添加到数组中
- 9. jQuery,.html,添加一个div元素
- 10. 添加一个HTML元素颜色框
- 11. 将元素添加到数组的最后一个元素
- 12. 将元素一次添加到列表中的两个元素
- 13. 如何将jQuery元素添加到另一个jQuery元素?
- 14. HtmlTextWriter将类添加到已具有一个元素的元素
- 15. 将表单元素添加到一个表单元素
- 16. 找到一个类并将其添加到另一个元素
- 17. Angular2将元素添加到元素
- 18. 将html var加载到另一个html元素中
- 19. 将MouseOverHandler添加到元素?
- 20. 将元素添加到JPanel
- 21. 将元素添加到UIAlertview
- 22. jQuery将动态内容从一个元素添加到另一个元素
- 23. 如何将一些html元素添加到jQuery的uidialog
- 24. 将类添加到多个元素
- 25. 将类添加到多个元素
- 26. 将一个新元素永久添加到一个SELECT框中
- 27. 如何将一个值添加到一个swagger元素?
- 28. 将元素从一个列表添加到另一个C#
- 29. 将一个xml元素添加到另一个xml中
- 30. Dynimically添加html元素绑定onclick事件到其他dynimically添加html元素
感谢您的快速回复并指出了这一事实。真的很感激:) –