我不是一个 JS 人,所以我有点在黑暗中跌跌撞撞。基本上,我想要的东西可以在特定用户的页面上为该用户添加 Twitter 搜索 @replies 的链接。
我想弄清楚两件事:
- 如何从页面中提取用户名,以便构建正确的 URL。 IE。如果我在 http://twitter.com/ev ,我应该找回“ev”。
- 如何操纵 DOM 将内容插入到正确的位置
这是我要定位的 HTML 片段:
<ul id="tabMenu">
<li>
<a href="/ev" id="updates_tab">Updates</a> </li>
<li>
<a href="/ev/favourites" id="favorites_tab">Favorites</a> </li>
</ul>
这是脚本(到目前为止):
// ==UserScript==
// @name Twitter Replies Search
// @namespace http://jauderho.com/
// @description Find all the replies for a particular user
// @include http://twitter.com/*
// @include https://twitter.com/*
// @exclude http://twitter.com/home
// @exclude https://twitter.com/home
// @author Jauder Ho
// ==/UserScript==
var menuNode = document.getElementById('tabMenu');
if (typeof(menuNode) != "undefined" && menuNode != null)
{
var html = [];
html[html.length] = '<li>';
html[html.length] = '<a href="http://search.twitter.com/search?q=to:ev" class="section-links" id="replies_search_tab">@Replies Search</a>';
html[html.length] = '</li>';
// this is obviously wrong
var div = document.createElement('div');
div.className = 'section last';
div.innerHTML = html.join('');
followingNode = menuNode.parentNode;
followingNode.parentNode.insertBefore(div, followingNode);
}
最佳答案
这是上面的纯 DOM 方法 - 为了好玩,我还尝试了用户名的提取:
var menuNode = document.getElementById('tabMenu');
if (menuNode!=null)
{
// extract username from URL; matches /ev and /ev/favourites
var username = document.location.pathname.split("/")[1];
// create the link
var link = document.createElement('a');
link.setAttribute('href', 'http://search.twitter.com/search?q=to:'+username);
link.setAttribute('id', 'replies_search_tab');
link.appendChild(document.createTextNode('@Replies Search'));
// create the list element
var li = document.createElement('li');
// add link to the proper location
li.appendChild(link);
menuNode.appendChild(li);
}
这相当于(基于原始代码片段):
<ul id="tabMenu">
<li>
<a href="/ev" id="updates_tab">Updates</a> </li>
<li>
<a href="/ev/favourites" id="favorites_tab">Favorites</a> </li>
<li>
<a href="http://search.twitter.com/search?q=to:ev" id="replies_search_tab">@Replies Search</a></li>
</ul>
如果您希望添加的链接显示在不同的位置,则需要稍微调整一下 insertBefore
。
关于javascript - 关于 DOM manip 和 GreaseMonkey 的一点帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365028/