博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mootools_MooTools 1.2 OpenLinks插件
阅读量:2513 次
发布时间:2019-05-11

本文共 3993 字,大约阅读时间需要 13 分钟。

mootools

I often incorporate tools into my customers' websites that allow them to have some control over the content on their website. When doing so, I offer some tips to my clients to help them keep their website in good shape. One of the tips I tell my customer is "whenever you create links to PDFs, Excel XLS', Word DOCs, or JPG/GIF/PNG images, make the link open in a new window." Unfortunately, my customers don't always follow this guideline.

我经常将工具整合到客户的网站中,从而使他们可以控制其网站上的内容。 这样做时,我会向客户提供一些提示,以帮助他们保持网站的良好状态。 我告诉客户的提示之一是“每当您创建指向PDF,Excel XLS',Word DOC或JPG / GIF / PNG图像的链接时,请在新窗口中打开该链接。” 不幸的是,我的客户并不总是遵循此准则。

In an effort to correct their mistakes, I've created a MooTools class that analyzes links on the page and adds a target attribute when necessary.

为了纠正他们的错误,我创建了一个MooTools类,该类分析页面上的链接并在必要时添加target属性。

用法 (The Usage)

window.addEvent('domready', function() {var olinks = new OpenLinks(['doc','pdf','xls','jpg','gif','png'],1,'_that_window','no-target');});

The class takes four arguments:

该类有四个参数:

  • file_extensions: an array of file extensions you would like to open in a new/specified window. Add file extensions without the '.' and lower-cased.

    file_extensions :您要在新的/指定的窗口中打开的文件扩展名数组。 添加不带“。”的文件扩展名。 和小写。

  • override_targets: boolean, representing whether you want an anchor's "target" attribute to be overidden

    override_targets :布尔值,表示是否要覆盖锚点的“ target”属性

  • target: string, defaults to "_blank" if none provided

    target :字符串,如果未提供,则默认为“ _blank”

  • no_class: if you don't want a link's target attribute set, add your custom class to those links.

    no_class :如果您不想设置链接的target属性,则将自定义类添加到这些链接中。

As you can see in the code example above, I want the following file extensions to open in a window named "_that_window": Word DOCs, PDFs, XLS files, JPGs, GIFs, and PNGs. Links with the class no-target are not modified, even if the file extension is a match.

如您在上面的代码示例中所看到的,我希望在名为“ _that_window”的窗口中打开以下文件扩展名:Word DOC,PDF,XLS文件,JPG,GIF和PNG。 即使文件扩展名匹配,带有no-target类的链接也不会被修改。

Moo JavaScript (The Moo JavaScript)

var OpenLinks = new Class({//initializationinitialize: function(file_extensions,override_targets,target,no_class) {//analyze all anchors$$('a').each(function(el) {//check each href for case-insensitive file extensionsvar str = el.get('href');var ext = str.substring(str.lastIndexOf('.') + 1,str.length)if(file_extensions.contains(ext.toLowerCase()) && ((override_targets || !el.get('target')) && !el.hasClass(no_class + ''))){el.setProperty('target',target ? target : '_blank');}});}});

(The Flow)

For every link in the document, I extract the file extension. If the link's file extension is in the array of marked file extensions...and the link's target can be overridden or the link doesn't have a target set...and the link doesn't have the specified class...the link is then modified. It's that simple!

对于文档中的每个链接,我都提取文件扩展名。 如果链接的文件扩展名位于标记的文件扩展名的数组中...并且链接的目标可以被覆盖或链接没有目标集...并且链接没有指定的类...则链接然后被修改。 就这么简单!

to view an example of the class in use.

查看正在使用的类的示例。

to download the class in an external .js file.

,将类下载到外部.js文件中。

注意 (Note)

I'd initially built the class to use more specific CSS selectors:

我最初构建该类以使用更多特定CSS选择器:

a[href$='.pdf'], a[href$='.jpg'], a[href$='.doc']//...

The problem with doing this is that the above method doesn't allow for case-insensitiveness. For example, "pdf" would match but "PDF" would not.

这样做的问题是上述方法不允许区分大小写。 例如,“ pdf”将匹配,但“ PDF”将不匹配。

更新资料 (Update)

MooTools dev caught wind of my class and coded the following JavaScript to make the class' code a bit shorter:

MooTools开发人员吸引了我的班级,并对以下JavaScript进行了编码,以使班级的代码更短:

// a lovely fast case-insensitive regexp build from file extensionsvar rex = new RegExp('\\.(?:' + file_extensions.join('|') + ')$', 'i'); // href und target sind native properties for links, no get() needed// no_class is now a required parametertarget = target || '_blank'; $$('a[href]:not(.' + no_class + ')').each(function(el) {  if ((force || !el.target) && rex.test(el.href)) el.target = target;});

Thank you dig'!

谢谢你挖'!

翻译自:

mootools

转载地址:http://tppwd.baihongyu.com/

你可能感兴趣的文章
一篇文章掌握nightwatch自动化测试
查看>>
vue 上传图片到阿里云(前端直传:不推荐)
查看>>
求最大区间,使得特定的两个数的个数相等
查看>>
node读写Excel操作
查看>>
双飞翼布局
查看>>
android利用wireshark抓包
查看>>
Mac和Windows系统下Mysql数据库的导入导出
查看>>
第五周学习进度情况
查看>>
原生js怎么判断一个对象是否为空
查看>>
CRM客户关系管理系统(八)
查看>>
洛谷P3195 [HNOI2008]玩具装箱TOY 斜率优化
查看>>
字节输入流 FileInputStream
查看>>
swt combo 自动补全
查看>>
Dynamically Creating Bound and Template Columns in GridView
查看>>
当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值(转)
查看>>
easyui datagrid使用参考
查看>>
Linux系统快速启动方案
查看>>
Redis持久化方式
查看>>
选择器+盒模型
查看>>
进度条2
查看>>