1

簡単な 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にあります。

4

1 に答える 1