راهنمایی در مورد ایجاد Bookmarklet

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="raphael-2.1.0-min.js"></script>
         <script type="text/javascript" src="qrcodesvg.js"></script>
         <!--<script type="text/javascript" src="qrcodesvg-min.js"></script>-->
        <script type="text/javascript">
            function generate() {
                document.getElementById("qrcode").innerHTML = "";
                
                var qrcodesvg    = null;
                var qrtest        = document.getElementById("qrtest").value;
                var input        = document.getElementById("qrinput").value;
                var size        = 250;
                var ecclevel    = 1;
                
                switch(parseInt(qrtest))
                {
                case 0: //classic
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size);
                    
                    qrcodesvg.draw();
                  break;
                case 1: //ecclevel 4
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : 4});
                    
                    qrcodesvg.draw();
                  break;
                case 2: //size 100
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", 100, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.draw();
                  break;
                case 3: //round
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.draw({"method":"round", "radius" : 8});
                  break;
                case 4: //bevel
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.draw({"method":"bevel", "radius" : 5});
                  break;
                case 5: //bevel square
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                
                    qrcodesvg.draw({"method":"bevel", "radius" : 4, "scope":"square"});
                    break;
                case 6: //colored pattern
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.draw({"method":"classic", "fill-colors":["#1C46ED","#021872","#0125C4"]}, {"stroke-width":1});
                  break;
                case 7: //colored square
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.draw({"method":"classic", "fill-colors":["#000000","#2D2D2D"], "fill-colors-scope":"square"}, {"stroke-width":0});
                  break;
                case 8: //background
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.setBackground(null, {"fill":"90-#FFF-#CECECE", "stroke-width":1, "stroke":"#FFF"});
                    
                    qrcodesvg.draw();
                  break;
                case 9: //frame
                    var qrcodesvg     = new Qrcodesvg( input, "qrcode", size, {"ecclevel" : ecclevel});
                    
                    qrcodesvg.setBackground({"padding" : 10, "margin" : 10}, {"stroke-width" : 20, "stroke" : "#3DBC27"});

                    qrcodesvg.draw();
                  break;
                }
            }
        </script>
    </head>
    <body>
        <select id="qrtest">
            <option value="0">Classic</option>
            <option value="1">Ecc level 4</option>
            <option value="2">size 100</option>
            <option value="3">Round</option>
            <option value="4">Bevel</option>
            <option value="5">Mitered Squares</option>
            <option value="6">Colored Patterns</option>
            <option value="7">Colored Squares</option>
            <option value="8">Background</option>
            <option value="9">Frame</option>
        </select>
        <textarea id="qrinput" size="2953">Hello World!</textarea>
        <input type="button" value="Submit" onclick="generate()"/>
        <div id="qrcode" ></div>
        
        <script type="text/javascript">
            var qrcodesvg     = new Qrcodesvg( "Hello World!", "qrcode", 250);
            
            qrcodesvg.draw();
        </script>
    </body>
</html>
در فایل پیوستی وب پیجی وجود داره که کدش اینجا درج شده.
درواقع در این صفحه متن مورد نظر رو وارد می کنیم، از ComboBox یکی از گزینه ها رو انتحاب میکنیم و با کلیک رو دکمه یک تصویر QR نمایش داده میشه.

نیاز دارم که این پروسه رو در یک بوکمارکلت خلاصه کنم، یعنی تابعی رو با چند آرگومان در URL صدا بزنم همین کار رو انجام بده و QR رو ایجاد کنه و نمایش بده.
چطور باید این تغییرات رو اعمال کنم

مشکل اینه که حتی اگر تابع رو مستقیم هم صدا بزنم تغییری ایجاد نمیشه:
کد:
javascript:generate();

لطفاً در این زمینه راهنمایی بفرمایید

تشکر.
 

پیوست ها

  • qrcodesvg-master.zip
    54.4 کیلوبایت · بازدیدها: 4

farik

Well-Known Member
با سلام..
خوب من حقیقت متوجه نشدم..تو این بوکمارکلت شما چطوری بناست ورودی ها رو بگیره؟..یعنی فقط یک نوع ورودی میگیره؟...یکم بیشتر در موردش توضیح بدین ...بتونیم کمکتون کنیم..
موفق باشید..
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
الان تابع generate هیچ آرگومانی نمیگیره و درعوض متغیرهای qrtest, input, size و ecclevel در خود تابع مقداردهی میشن که qrtest و input مقادیرش رو از دو کنترل InputBox و ComboBox موجود در وب پیج دریافت می کنه
هدف من این هست در این بوکمارکلت دستور تولید QR رو با پارامترهایی که تابع بعنوان ورودی میگیره بده. مشکل در تغییر تابع نیست، مشکل من این هست که نمیدونم دقیقاً چطور این بوکمارکلت رو بعنوان URL بنویسم که عملیات انجام بشه.
من اگر کد ;()javascript:generate رو هم در آدرس بار بنویسم اتفاقی نمی افته، توقع من این بود که با این ادرس، همون اتفاقی بیفته که با کلیک کردن روی دکمه میفته.

شاید بخاطر این هست که در این پیج دو اسکریپت خارجی جاوااسکریپت دیگه هم لود شدن.

به هرحال هدف کلی من این هست که بتونم بدون نیاز به تعامل با صفحه و دخالت کاربر، QR رو تولید کنم و عملاً عناصر دیگه مثل Button, InputBox و ComboBox رو از صفحه حذف کنم.
 

farik

Well-Known Member
باسلام..
همین الان در مرورگر کروماین کد رو امتحان کردم به صورت بوکمارکلت و کار کرد..:
[HTMLS]
javascript:generate();
[/HTMLS]
نمیدونم از چه مرورگری استفاده میکنین کخ به درستی کار نکرده...برای من که کار کرد حقیقتش..
موفق باشید..
 

جدیدترین ارسال ها

بالا