簡単な Greasemonkey スクリプトを作成しようとしていますが、Javascript の初心者であり、Greasemonkey の完全な初心者であるため、問題が発生し続けています。これまでの私のコードは次のとおりです。
// ==UserScript==
// @name TEDToYoutube
// @include http://www.ted.com/talks/*.html
// @exclude http://www.ted.com/talks/*.html?*
// @version 1
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
// @run-at document-start
// @grant none
// @namespace abiteasier.in
// ==/UserScript==
var url = window.location.href;
var talk_name = url.split("/").pop();
talk_name = talk_name.substring(0, talk_name.lastIndexOf('.html'));
var youtube_search_url = 'http://www.youtube.com/user/TEDtalksDirector/search?query=' + talk_name;
window.location.href = youtube_search_url;
$(document).ready( function() {
alert("called");
var a = $("li.channels-browse-content-list-item");
alert(a.length());
} );
お察しのとおり、このスクリプトは TED トーク ページから対応する Youtube ビデオにリダイレクトするものです。検索は機能しており、検索ページは問題なく読み込まれますが、.ready 関数が起動しないようです。上記の @run-at による問題ですか? Greasemonkey はそれを元の TED ページのみに適用しますか?それともスクリプトからアクセスするすべてのページに適用しますか? それとも、スクリプトの別の場所に問題がありますか?
更新: わかりました、私はこれについて考えました。これについて考えることができる最も合理的なロジックは、URL が変更されると、GM がこのスクリプトの実行を停止するということです。GMドキュメントでこれを確認しようとします。その分野に精通している場合は、回答またはコメントを投稿してください。
更新 2 : YouTube ページを @include に含めることで問題を修正しました。コードはhttp://userscripts.org/scripts/show/174390にあります。