ラベル js の投稿を表示しています。 すべての投稿を表示
ラベル js の投稿を表示しています。 すべての投稿を表示

2015年2月6日金曜日

別ドメインのiframeの親のURLを取得する方法

概要

ことなるドメインのiframeを使用した時に、子供のiframeから親のurlを取得する方法です。

そもそも、こんな事をしないといけない時点で、設計ミスなような気がしますが、

今回のケースでは、

iframeでフォームを用意して、親がそれを読み込んでいます。
親は複数ページで同じiframeのフォームを読み込んでいるので、どのページのフォームかを識別する為に、
親のURLを取得したくなってしまったので、その時のメモになります。

結論

結論からすると

document.referrer

を使用するです。

サンプルコード

参考までに、iframe側のフォームのコードになります。

<form id="xxx-form">
    <input id="page_url" name="page_url" type="hidden" value="">
    <div class="form-group">
      <label class="control-label" for="name">name</label>
      <div class="">
        <input class="form-control" id="name" name="name" type="text" value="">
      </div>
    </div>
    <div class="form-group">
      <div class="">
        <input class="form-control btn btn-default" id="submitBtn" name="commit" type="submit" value="送信">
      </div>
    </div>
  </form>


<script>
 $(document).ready(function(){
        $('input#page_url').val(document.referrer);
    });
</script>

ページ読みこみ時に、page_urlのhiddenフィールドに親のurlを設定しています。

まとめ

そもそも、こんなことをしないですむように設計しましよう。

2014年11月27日木曜日

Dropzoneで非同期ファイルアップロードをする方法

ファイルアップロードを非同期でかつ、ファイル選択をドラッグ&ドロップでおこなうため、Dropzoneを使って実装する方法です。
デフォルトのまま使ってもUIがかっこよくっておすすめです。
公式のページはいかになります。
http://www.dropzonejs.com/
GitHub - enyo/dropzone

インストール

dropzone.jsのダウンロードは、公式サイト or GitHubからダウンロードして読み込み。
<script type="text/javascript" src="js/dropzone.js"></script>

フォームの追加

<form id="my-awesome-dropzone" action="/target" class="dropzone">
      <div class="dz-default dz-message"><span>「ドラッグ&ドロップ」またはここをクリック</span></div>
      <div id="upload_message"></div></form>
dz-messageで、デフォルトの表示メッセージを変更しています。

configファイルの設定

dropzone用のconfigファイル(dropzone_config.js)を作成します。
Dropzone.optionsのオブジェクとを定義して行きます。
Dropzone.options.myAwesomeDropzoneのmyAwesomeDropzoneはformのidをキャメルケースにした文字列を指定します。
jQuery(function () {
    if ($('form.dropzone').length > 0) {
      Dropzone.options.myAwesomeDropzone = {
            maxFiles: 2,
            autoProcessQueue: true,
            init: function () {
                this.on("maxfilesexceeded", function (file) {
                    this.removeAllFiles();
                });
                this.on("addedfile", function (file) {
                    if (this.files[1] != null) {
                        this.removeFile(this.files[0]);
                    }
                    return $('#upload_message').html("");
                });
                this.on("success", function (file) {
                    var shop_category = jQuery.parseJSON(file.xhr.response).shop_category;
                    return $('#upload_message').html("
                      <b style='color: green;'>アップロード成功しました。</b>");
                });
                this.on("error", function (file) {
                    return $('#upload_message').html("<b style='color: red;'>アップロードに失敗しました。</b>");
                });
                this.on("complete", function (file) {
//                    this.removeFile(file);
                });

            }
      }
    }
});
上記設定では、maxFiles: 2としていますが、1個づつファイルをアップロードするようにしています。
addedfileイベントで、2個目のファイルをアップロード使用とした時に、0番目のファイルを削除しています。
こうすることで、ファイルを先入先出にして、使い勝手がよくなると思います。
上記で作成した、dropzone_config.jsは、scriptタグで使う場所に読み込みます。
<script type="text/javascript" src="js/dropzone.js"></script>
<script type="text/javascript" src="js/dropzone_config.js"></script>
これまでの設定で、Server側へのファイルの送信が可能となります。

今回使用した、オプションとイベントは下記の通りです。
他にもオプションやイベントが使えるので詳細は、公式ページをご確認ください。

オプション

option 説明
maxFiles 指定できるファイル数を指定する。指定数を超えた場合、dz-max-files-reached が呼ばれます。
autoProcessQueue 複数ファイルアップロードした場合に、アップロードを自動でqueueで処理するかの設定。falseにした場合、.processQueue() を自分で呼び出す必要がある。基本 true でよいと思います。

イベント

event 説明
maxfilesexceeded ファイル数がmaxFilesの指定を超えてた時に呼び出される。
addedfile ファイルを追加した時に呼び出される。
success ファイルアップロード成功時に呼び出される。
error ファイルアップロードでエラーが発生した時に呼び出される。
complete ファイルアップロードが成功 or エラーの時に呼び出される。

2014年9月20日土曜日

オススメ スライダー Owl Carousel 2の使い方

スライダーのプラグインも色々とありますが、私がオススメなのはOwl Carouselです。
動画のスライドや、レスポンシブルにやってくれたり、モバイルのタッチ&ドラッグにも対応しているので、PC、モバイル共通のコードでいく人には、最高にオススメのスライダーです。
以下に簡単に使い方を説明します。
執筆時点のバージョンは、2.0.0-beta.2.4です

基本的な使い方

js
$( document ).ready(function() {
    $('.owl-carousel').owlCarousel({
        loop:true, // 無限ループ
        margin:10, // margin-right 単位はpx
        nav:true, //  next/prevボタンの表示・非表示
        responsive:{ // 画面サイズによるスライドの表示数
            0:{
                items:1 // 0~600pxの間は、1個表示
            },
            600:{
                items:3 // 600~1000pxの間は、3個表示
            },
            1000:{
                items:5 // 1000px~の間は、5個表示
            }
        }
    });
});
html
<div class="owl-carousel">
    <div class="item"><h4>1</h4></div>
    <div class="item"><h4>2</h4></div>
    <div class="item"><h4>3</h4></div>
    <div class="item"><h4>4</h4></div>
    <div class="item"><h4>5</h4></div>
</div>
owl-carouselの子要素($(".item"))がスライドの対象となる。

Lazy Load

後ろにあって、まだ表示されていない画像を表示される直前に読み込むことができるため、初期表示での描画負荷が軽くすることができる。
js
$( document ).ready(function() {
    $('.owl-carousel').owlCarousel({
        items:4,
        lazyLoad:true,
        loop:true,
        margin:10
    });
});
html
<div class="owl-carousel">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=1" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=2" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=3" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=4" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=5" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=6" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=7" alt="">
    <img class="owl-lazy" data-src="http://placehold.it/350x250&text=8" alt="">
</div>
ポイントは以下の2点。
1. lazyLoad:trueをtrue
2. data-srcに画像のパスを指定する。
これで、画像を遅延して読み込んでくれます。

参考ページ

最新バージョン

公式ページ
デモページ
ドキュメント

旧バージョン(安定)

旧公式ページ

statistics