Posts Tagged JavaScript
How know Base Path of Drupal in JavaScript
Posted by admin in Drupal, JavaScript, jQuery on May 17th, 2010
Sometimes you want to know about the Base Path of your Drupal installation in JavaScript. You may want to know about this path for sending the AJAX request at correct URL relatively, load the image or some other type of file on client side through JavaScript etc.
Drupal provide a variable called Drupal.settings.basePath for this purpose in JavaScript. But this variable is only available if you include any custom JavaScript file or JavaScript block in your module. By default Drupal doesn’t include the ‘jquery.js‘ and ‘drupal.js‘ file in generated output. It only add these files if you add your custom JavaScript file or JavaScript block. We can include our custom JavaScript file in Drupal like this:-
drupal_add_js(drupal_get_path('module','my_module'). '/my_module.js');
The my_module.js file should reside in same directory where my_module module exist. This will force Drupal to add jquery.js and drupal.js files in output.
These two files initialize the Base Path variable. In drupal.js file, on top you can see the initialization of setting object in Drupal object. Like this:-
var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} };
Drupal generate some JavaScript code in Script block inside head tag of each page for extending the settings object with the help of jQuery. Like this:-
jQuery.extend(Drupal.settings, { "basePath": "/" });
You can test the Base Path by adding following code in my_module.js file.
$(document).ready(function() { alert(Drupal.settings.basePath); });
This will alert the Base Path for Drupal installation after loading of the page.
Round Number upto 2 decimal places in JavaScript
Posted by admin in JavaScript on January 17th, 2010
JavaScript’s Math.round() function doesn’t provide facility to round off a number up to 2 or more decimal places. So, here I’m showing a simple JavaScript code using which you can round off numbers up to 2 decimal places. You can change this for more decimal places.
var retailPrice = 9.99; var percentage = 0.2525; /* 25.25% */ var decimalPlace = 100; /* 100 for 2 decimal place. 1000 for 3 decimal place.*/ var wholeSalePrice = Math.round(percentage * retailPrice * decimalPlace) / decimalPlace; alert(wholeSalePrice); /* This will show 2.52 */
Initialize LightBox using JSON string and Run it from Flash
Posted by admin in Flash, JavaScript, Prototype on August 25th, 2009
Lightbox is the most popular way of showing large image on click on thumbnail over the web. Lot of websites are using the LightBox. Normally, We use lightbox using the “rel” attribute of anchor tag. We use lightbox this way:-
<a href="images/image-1.jpg" rel="lightbox" title="thumb"><img src="images/thumb-1.jpg" width="100" height="40" alt="" /></a>Here, we provided the “rel” attribute as “lightbox” in hyperlink. What lightbox script do is when page load completed its check all the hyperlinks of page and if rel=”lightbox” is exists them it push this link into an array.
Lightbox extract the “href” and “title” attributes of each link having rel=”lightbox” and push all of them into array. “href” is normally the URL of larger image. Lingtbox also add “click” event on all of these hyperlinks and when user click on any particular thumbnail the lightbox starts.
Here, I’m showing a way in which you can initialize the lightbox by using the JSON string. Basically, this JSON string contains the “href” and “title” information which we want to show. We can create this string dynamically using any server side scripting language. Here is one of sample JSON string.
<script language="javascript"> var img_json = [['pics/photo-80.jpg', 'Title 01'],['pics/photo-128.jpg', 'Title 02'],['pics/photo-160.jpg', 'Title 03'],['pics/photo-165.jpg', 'Title 04'],['pics/photo-205.jpg', 'Title 05'],['pics/photo-206.jpg', 'Title 06']]; </script>
You can learn more about JSON here.
We also need to do some small changes in lightbox javascript file so it use our JSON string for image array instead of create array by checking the “rel” attribute in whole page.
You can download the customized lightbox javascript file from here.
You can see the working demo here.
1. Remove the “imageLink” parameter from start function because now we not starting LightBox by not clicking any thumbnail.
start: function(imageLink)
function to
start: function()
2. Now we are initializing the “imageArray” using JSON string.
this.imageArray = [];
to
this.imageArray = img_json;
3. Comment these line of code inside start function bacause we not want to check whole page links for lightbox.
/*if ((imageLink.rel == 'lightbox')){
// if image is NOT part of a set, add single image to imageArray
this.imageArray.push([imageLink.href, imageLink.title]);
} else {
// if image is part of a set..
this.imageArray =
$$(imageLink.tagName + '[href][rel="' + imageLink.rel + '"]').
collect(function(anchor){ return [anchor.href, anchor.title]; }).
uniq();
while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; }
}*/4. Add function startLightBox() at the end of Lightbox class. This function start the lightbox when we click on the link having id=”start”.
startLightBox: function() { var th = this; Event.observe($('start'), 'click', function () { th.start(); }); }
5. Add this line in initialize() function to call “startLightBox()” function which create the click event on link having id=”start”.
this.startLightBox();
After completing all the five changes in lightbox.js you need to create a link with id = “start” in your HTML file. When you click on this link its starts the LightBox. Here is the code for HTML file.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Initialize LightBox using JSON string and Run it from Flash</title> <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /> <script src="js/prototype.js" type="text/javascript"></script> <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script> <script src="js/lightbox.js" type="text/javascript"></script> </head> <body> <a href="#" id="start">Start LightBox</a> </body> <script language="javascript"> var img_json = [['pics/photo-80.jpg', 'Title 01'],['pics/photo-128.jpg', 'Title 02'],['pics/photo-160.jpg', 'Title 03'],['pics/photo-165.jpg', 'Title 04'],['pics/photo-205.jpg', 'Title 05'],['pics/photo-206.jpg', 'Title 06']]; </script> </html>
Unscape HTML in JavaScript
Posted by admin in JavaScript on July 13th, 2009
This function strips tags and converts the entity forms of special HTML characters to their normal form. I created this function with the help of code of Prototype JavaScript library.
<script language="javascript"> function unscapeHTML(str) { var div = document.createElement('div'); div.innerHTML = str.replace(/<\/?[^>]+>/gi, ''); if (div.childNodes[0]) { if (div.childNodes.length > 1) { var retStr; for (var i = 0; i < div.childNodes.length; i++) { retStr += div.childNodes[i].nodeValue; } return retStr; } else { return div.childNodes[0].nodeValue; } } else { return ''; } } </script>
How you can use it.
<script language="javascript"> var1 = 'x > 10'; alert(unscapeHTML(var1)); // This will alert 'x > 10' var2 = '<h1>Pride & Prejudice</h1>'; alert(unscapeHTML(var2)); // This will alert 'Pride & Prejudice' </script>
