在 Firefox 中使用 jQuery(userscript)添加一个表单链接

Add a link to a form with jQuery (userscript) in Firefox

本文关键字:添加 一个 链接 表单 userscript Firefox jQuery      更新时间:2023-09-26

我正在尝试使用jQuery使用用户脚本添加指向在线表单的搜索链接。我在 Firefox 中工作得不多,我觉得通常在 chrome 中工作的东西对我来说不会在 ff 9/10 次中工作。但无论如何...这需要与FF一起使用。

我正在从<p>元素中获取文本并从中创建搜索 URL(或尝试这样做)。现在这是我正在尝试的功能,应该这样做......但它什么也没做,甚至控制台上没有任何错误

$(function() {
    var companyName = $('p')[7]; // Element that contains the name text
    var companyText = companyName.text(); // Retrieve the text from element
    var mixRankUrl = $("<a></a>").innerHTML("Search Mixrank"); // Create an <a> element
    mixRankUrl.href = 'https://mixrank.com/appstore/sdks?search=' + companyText; // Define the href of the a element
    var sdkPara = $('label.control-label')[10]; // Where I want it to go
    sdkPara.append(mixRankUrl); // Append the element
});

此外,编写 html 的人几乎不使用任何 id,大多数类都分配给 10 个或更多元素......因此,除非有更好的方法,否则我有点坚持使用节点选择器(它们与表单保持相同的形式)。

问题是你尝试在 DOM 元素上使用 jQuery 方法。不明白为什么你的代码没有任何错误。

例如:$('p')[7]返回一个 DOM 元素,而$('p').eq(7)返回一个 JQuery 对象。所以你不能在 DOM 元素上使用像 text() 这样的 jQuery 方法。你需要处理jQuery对象。

出于同样的原因,您在声明标签对象和修改链接的 href 属性时遇到问题。

尝试如下:

$(function() {
  var companyName = $('p').eq(7); // Element that contains the name text
  var companyText = companyName.text(); // Retrieve the text from element
  var sdkPara = $('label.control-label').eq(10); // Where I want it to go
  var mixRankUrl = $('<a>',{
     text: 'Search Mixrank',
     href: 'https://mixrank.com/appstore/sdks?search=' + companyText
  }).appendTo(sdkPara); // Append the element
});