使用JavaScript书签从图像链接中提取alt文本
Extracting alt text from image links with a JavaScript bookmarklet
我找到了一种通过找到的Perl脚本从图像链接中提取alt文本的方法。然而,该方法需要下载目标HTML;通过Perl脚本进行处理,然后生成一个包含我需要的特定alt文本的文本文件;然后删除一些我无法手动通过代码过滤掉的额外文本,因为我不知道如何使regex与Perl一起工作(我尝试安装PCRE,但没有成功)。
这种方法仍然不切实际,我相信我可以更快地通过JavaScript bookmarklet提取alt文本,并立即将输出整齐地列在新的选项卡中。然而,我不知道如何将Perl脚本转换为JavaScript,也不知道如何从头开始编写。
这是Perl脚本:
{
# Get data from HTML file
my $From = cwd() . '/' . $ARGV[0];
open( HTMLFILE, '<' . $From ) or die( "Cannot open $From to read." );
my $Html;
read HTMLFILE, $Html, -s $From;
close HTMLFILE;
# Find IMG elements
print "Images found!";
my %AltTexts;
while ( $Html =~ /(<IMG'b.*?>)/isg ) {
my $ImgElement = $1;
# Find SRC tag
$ImgElement =~ /SRC's*='s*(['"''])(.*?)'1/is;
my $Src = $2;
# Find ALT tag & store text
if ( $ImgElement =~ /ALT's*='s*(['"''])(.*?)'1/is ) {
$AltTexts{$Src} = $2;
}
else { # No ALT found so give it default text if none already found
unless ( exists( $AltTexts{$Src} ) ) {
$AltTexts{$Src} = 'NO_ALT_TEXT';
}
}
}
# Write extracted data to a file
my $To = cwd() . '/' . $ARGV[0] . '.txt';
open( ALTTEXTFILE, '>' . $To ) or die( "Cannot open $To to write." );
foreach my $SrcPath ( sort keys %AltTexts ) {
print ALTTEXTFILE "$AltTexts{$SrcPath}'n";
}
close ALTTEXTFILE;
}
我确实对它进行了调整,以阻止脚本打印链接,删除空行等。
原始脚本可以在这里找到
所以,我的问题是,提取alt文本的JavaScript会是什么样子?
像这样:
javascript:(function() {
var imgs = document.images,alts=[];
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
alert(alts.join("'n"));
})()
示例代码:
(function() {
var imgs = document.images,alts=[];
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
console.log(alts);
})()
<img alt="alt1" />
<img alt="" />
<img alt="alt2" />
在新窗口中显示(允许弹出窗口阻止程序)
javascript:(function() {
var imgs = document.images,alts=[],w;
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
if (alts.length>0) {
w = window.open("","_blank");
if (w) {
w.document.write(alts.join("<br />"));
w.document.close();
}
else {
alert("cannot pop'n"+alts.join("'n"));
}
}
})()
避免重复:
更改
alts.push(imgs[i].getAttribute("alt") || "no alt");
至
var alt = imgs[i].getAttribute("alt");
if (alts && alts.indexOf(alt)==-1) alts.push(alt);
相关文章:
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 在数据提取完成之前进行页面渲染
- 如何在Javascript中从字符串中提取某些单词
- RegEx JavaScript:数字后的符号提取
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- Regex提取URL返回数组的一部分;未定义”;
- 如何提取“;href"最近列表项中的属性值
- 使用时刻.js从日期时间中提取时间
- 通过javascript从会话中提取用户名
- HTML页面如何提取通过表单传递的参数
- 是否可以自动拉取“随机”;标签“;从一长串文本中提取
- innerHTML的子字符串可以在初始调用时提取吗
- 如何使用phonegap从安卓设备中提取联系人的字母顺序
- 如何从特定页面中提取php变量值
- 从字符串中提取年份的Javascript正则表达式
- 如何使用JavaScript提取此url的一部分
- 使用BeautifulSoup从Javascript中提取文本以获得关注者数量
- 使用javascript从字符串中提取浮点数
- 换出特色图片时从缩略图中提取alt/title标签
- 使用JavaScript书签从图像链接中提取alt文本