ユーザーがカスタムボタンを使いやすくするスクリプトを作成しようとしていますが、次のようなものがあります
<script src="http://host.com/file.js?id=12345"></script>
私が疑問に思っているのは、そのパラメーターfile.js
を取得する方法です。id
を使用するdocument
と、スクリプト行を含む元の html ページが取得され、必要なのはそれid
です。
そのIDを正常に取得する方法はありますか? 範囲はどうあるべきですか?
追加した
アイデアは、たとえば、小さくて単純なリストを作成するために、ページにいくつかのボタンを配置できるということです。
<ul>
<li><script src="http://host.com/file.js?id=12345"></script></li>
<li><script src="http://host.com/file.js?id=23456"></script></li>
<li><script src="http://host.com/file.js?id=34567"></script></li>
</ul>
これは最終的に次のように変換されます
<ul>
<li><a class="view40btn" href="#" data-id="12345"><strong>V40</strong> Watch the video</a></li>
<li><a class="view40btn" href="#" data-id="23456"><strong>V40</strong> Watch the video</a></li>
<li><a class="view40btn" href="#" data-id="34567"><strong>V40</strong> Watch the video</a></li>
</ul>
上記のリストは、HTML では次のようになります。
私の唯一の問題は、data-id
これが で生成されるため、属性に正しい ID を割り当てることができないことfile.js
です。
結果
Paulproの回答から、私は彼のアイデアで作業し、クライアントにははるかに多くのスクリプトがロードされ、いくつかのスクリプトがロードされることを知っていid
ました。最終的な作業バージョン用に少し変更しました:
var id = (function(){
var scripts = document.getElementsByTagName('script');
for(var i = 0, result = {}; i < scripts.length; i++)
if(scripts[i].hasAttribute('data-viewfileid'))
result['id'] = decodeURIComponent(scripts[i].getAttribute('data-viewfileid'));
return result['id'];
})();
var html = '<a class="view40btn" href="#" data-id="' + id + '"><strong>V40</strong> Watch the video</a>';
document.write(html);
ユーザーのスクリプトは次のようになります。
<script data-viewfileid="4444" src="file.js" type="text/javascript"></script>