ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

新手/初学者Javascript请求

2019-12-01 07:38:07  阅读:231  来源: 互联网

标签:greasemonkey javascript


HTML代码:

<td>
<img src="../images/items/333.png"><br>
<b>Product One</b><br>
(2 in stock)<br>
<i>65 USD</i><br>
<form action="shopping.php?shop=1&amp;item=333&amp;price=65&amp;buy=conf&amp;type=" method="post">
<input name="" value="Buy this item" type="submit">
</form></td>

<td>
<img src="../images/items/444.png"><br>
<b>Product Two</b><br>
(4 in stock)<br>
<i>5 USD</i><br>
<form action="shopping.php?shop=1&amp;item=444&amp;price=5&amp;buy=conf&amp;type=" method="post">
<input name="" value="Buy" type="submit">
</form></td>

这是我正在处理的页面上的html代码,无法更改html代码.
页面上有几个td标签,其中包含您在上面的代码中看到的以下信息.

我想写一个脚本来做这样的事情:

if (document.body.innerHTML.indexOf("Product One") > -1) {
document.location = "shopping.php?shop=1&amp;item="+itemID+"&amp;price="+USD+"&amp;buy=conf&amp;type="
}

在页面的正文/ td中搜索在脚本中指定的“产品名称”,然后找到该URL,然后转到包含需要提取的变量,itemID和USD的URL.

通过使用数字从image.png的s​​rc中提取itemID.例如,../images/items/444.png的itemID为444.

USD从斜体标签之间定义的价格中提取.例如,对于i,5 USD // i的USD的提取值被提取.将是5.

渔获为

我将需要很多if(document.body.innerHTML.indexOf(“ Name”)> -1){document.location =“ shopping.php?shop = 1& amp; item =” itemID“& amp; price =“ USD”& amp; buy = conf& amp; type =“},以适应我要指定的大量产品.我可能要指定“第一个产品到一百个产品”和“子产品A到Z”

我想到的一些处理方式(需要放入javascript代码中)是:

>将我要指定的产品列表放入数组(类似)var list = new Array(“产品一”,“产品二”,“子产品A”);并具有检查页面上是否存在该阵列上显示的任何产品的功能.
>找到产品后,要获取itemID,请从产品的图像src中隔离.png之前和/ items /之后的数字.而要获得USD,请在< i> < / i>标签,并且仅采用数值
>为此,我认为可以使用nextSibling或previousSibing,但是我对此不太确定.
>或者,为了简化操作,可能有一个函数可以立即定位表单的操作值并设置window.location,因为< form action =“ shopping.php?shop = 1& item = 444& price = 5& amp; buy = conf& amp; type =“ method =” post“>
>在使用XPath之前我已经看过了吗?

解决方法:

使用jQuery并不困难-尤其是如果我们将其扩展为搜索不区分大小写的正则表达式.

以下脚本应该与问题中的HTML结构一起使用,如果它准确无误,并且不是AJAX添加的.注意定位产品描述时正则表达式具有的功能.

您可以see the underlying code at work at jsFiddle.

// ==UserScript==
// @name     _Auto-follow targeted product links.
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// ==/UserScript==

var targetList  = [
    "Shoes, pumps",
    "Horse shoes",
    "(?:Red|Pink|Burgundy)\\s+shoes?"
];

/*--- Extend jQuery with a case-insensitive version of contains().
    Also allows regular expressions.
*/
jQuery.extend (
    jQuery.expr[':'].containsCI = function (a, i, m) {
        //--- The next is faster than jQuery(a).text()...
        var sText   = (a.textContent || a.innerText || "");     

        var zRegExp = new RegExp (m[3], 'i');

        return zRegExp.test (sText);
    }
);

$.each (targetList, function (index, value) { 
    var jqSelector          = 'td > b:containsCI("' + value + '")';
    var productFound        = $(jqSelector);
    if (productFound.length) {
        var matchingForm    = productFound.first ().nextAll ("form");
        if (matchingForm.length) {
            alert (productFound.text () );
            document.location   = matchingForm.attr ("action");
        }
    }
} );

标签:greasemonkey,javascript
来源: https://codeday.me/bug/20191201/2079161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有