楽天で禁止タグを使うための一案

楽天で禁止タグを使えるようにする方法として、一案ですが、document.write()が使えるのではないかと。

追記 (2016-08-22)
と思ったけれども無効な方法でした。scriptタグも使えないそうで。

「楽天の管理画面でページを作ろうとしたら、使用が禁止されているタグがあって困った。そこで、楽天で禁止タグが使えるようになる裏技で解決しようと思うけれど、どうであろうか?」

と聞かれ、裏技を見てみました。

タグ内に13個の全角スペースを入れるまたは、(=””)をタグの後にいれるとスマホでもlinkやiframe,classなど使えなかったタグが使える様になります。
楽天で禁止タグが使えるようになる裏技より

これで解決できるのであれば、それはそれでという感じはあります。
ただ、できれば別の方法で解決した方がよいかなとも思います。
というのは、13個の全角スペース、(=””)のいずれもHTMLのルール違反になってしまうのです。

HTMLのルール違反が多少あっても、
大抵のWebブラウザでは思ったとおりの表示や動作をしてくれます。
とはいえ、なるべくキレイに書いた方が
表示崩れや動作不良の心配が少なくなります。

そこで、裏技ほど簡単で上手く行くとは限りませんが
ここでは、これとは異なる別案を1つあげておきます。

もし禁止タグを数箇所使いたいというくらいであれば、
一案としてdocument.write()を使うという方法はどうでしょうか。
たとえば、スマホでmeta要素でviewport属性を使いたい場合、
以下のように書くことができるかと思います。

meta.js

!function(){document.write('<meta name="viewport" content="width=320">');}();

※metaタグを書き込むプログラムです。

********.html

<html>
<head>
<script src="meta.js"></script>
...
</head>
<body>
...
</body>
</html>

※head要素の最初のところで、metaタグを書き込むプログラムを読み込んで実行します。

document.write()はできるだけ使わない方がよいものですが、
いちおうルール違反ではないので、
少しだけよい解決方法になるかもしれません。

This method has very idiosyncratic behavior. In some cases, this method can affect the state of the HTML parser while the parser is running, resulting in a DOM that does not correspond to the source of the document. In other cases, the call can clear the current page first, as if document.open() had been called. In yet more cases, the method is simply ignored, or throws an exception. To make matters worse, the exact behavior of this method can in some cases be dependent on network latency, which can lead to failures that are very hard to debug. For all these reasons, use of this method is strongly discouraged.
https://www.w3.org/TR/2011/WD-html5-20110525/apis-in-html-documents.html#document.writeより

それにしても、13個の全角スペースや(=””)…って、
これ、よく発見できなたなぁ。

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*