Dr Design 2 – From Popunders to Rollovers

Share this article

As always there are new patients wandering into my offices all the time — and there’s never a shortage of ailments for me to treat. So let’s dive right into this week’s diagnoses (check out last week’s consultation if you missed it)! And don’t forget – if you have a problem, the Doctor is here to help. Send your questions to drdesign@sitepoint.com.

ASP and IIS-itis

Dr Design,
I’m a teacher, and HTML and ASP amateur. I made a site and tested it in PWS and it worked perfectly, with database stuff and even a forum. It all worked well.

Then I copied the folders and used them in IIS (about which I know practically nothing) and the ASP functionality doesn’t work at all (I have the folders in the same places I used in PWS – I even made a virtual directory). I get lost when trying to understand the IIS material. The machine I’m referring to is a 2000 server. Can you help me? Rafael

Rafael, let me start by welcoming you to the world of server side programming! There are many great languages out there for you to learn and ASP is definitely a worthy choice. If ASP at any point does prove to be too much, you may want to check out PHP or ColdFusion as well, as you do want to pick one which suits your needs and with which you’re comfortable.

That said, this isn’t so much an ASP issue as it is a Webserver issue. Personal Web Server (PWS) is a great platform to develop on and you seem rather lost about IIS. Let me ease some of your pain: they are nearly the same. PWS is simply a cut-down version of IIS which many developers use during the early stages of Web development before they transfer their sites to IIS, much as you’ve done.

I believe the issue in this case is likely to be that ASP may not yet be enabled on your copy of IIS. If it’s hosted on a Website hosting account you’ll either need to ask the host to enable it on your site, or switch hosts. If the server is a corporate server, speak with MIS to ensure they install the software properly.

If, on the other hand, you’re actually running the server and it’s still not working, let’s run some quick tests. Create this test.asp page:

<% 
Response.Write("Spread the Love -- Dr. Design!")
%>

If the page appears properly, then our problem lies in the actual code. If it is as I suspect, though, ASP is not properly se up. ASP is installed on IIS as the default setting and it actually takes a force of effort to not have it enabled. My suspicion then is that you probably don’t have execute permissions enabled on the Web. So, right click on your new Web, hit Properties, go to the Home Directory tab and look near the bottom for “Execute Permissions”. If it is set to “none”, as in Figure 1, you will get an error message much like Figure 2 (over).

712_execute

Figure 1: Execute Permissions Disabled

Figure 2: Result of Execute Permissions Disabled

712_disabled

The Execute Permissions should be set to either “Scripts Only” or “Scripts & Executables”. For security reasons, unless you actually run executables on your site, I strongly suggest keeping the setting at “Scripts Only”, as in Figure 3.

712_executeenabled

Figure 3: Execute Permissions Enabled

If your ASP still doesn’t work, feel free to come back for another consultation and we will cover some other possible issues. Good luck!

I Need a Website – and Some Straight Answers!

Hey Doc,
I’m attempting to find an individual or company to design a Website for me and I feel overwhelmed. I would like it done professionally and I’ve found tons of people out there telling me tons of things (actually it’s very hard for an old bird like myself to keep up with it all). Could you offer any suggestions? I would greatly appreciate it. I’m frustrated and could use some straight answers. I appreciate any words or efforts you offer. Mark

Choosing the right company for any job can often be a stressful experience, and doubly so when you aren’t sure what to look for. As with any industry there are certain smoke-screens and telltale signs that “unworthy” companies throw up. Though none of these signs is necessarily an indication of a bad company, they are things to be wary of:

  1. Professional service for amateur costs
  • A client list featuring many sites that seem better than the company’s own
  • They don’t treat you as important or don’t seem to really be listening to you
  • They already have a plan for your project before they meet with you
  • As I said, none of these things are bad in and of themselves, and there are often simple explanations for them. But I’d suggest that you go with a company whose employees have confidence in themselves, and instill confidence in you. At the end of the day you want to be happy with the company you’ve chosen.

    A few good places to look for solid freelancers, and companies who will throw themselves at you, to eagerly answer any question you have include:

    If you’re looking for templates or Websites produced by professionals, most large online communities have sections dedicated to allowing members to request designs from the members. SitePointForums has just such a section (called the Trading Post) where you can not only get no-risk previews of designs from some very talented designers, but also view their past work upon request.

    You could also look at choosing a consulting company to sort through the mess that is Web companies for you. The only real problem with finding a good consultant to wade through the mess is that you have to beware of exactly the same pitfalls that you’d watch out for if you were selecting a design firm. The advantage is that often consulting companies will be much more upfront with client testimonials and you should be able to gauge their actual strengths quite quickly.

    http://sitename.com

    Dr. Design,
    I was wondering how to obtain a http://sitename.com address as opposed to a http://www.sitename.com. It may seem like a simple question but you input is greatly appreciated. Phillip

    The best answer I can give you is to talk to your Web hosting company. This is something that they should set up anyways, and really is quite simple for them to enable on either IIS or Apache.

    Informational Rollover Script

    Hey Doctor,
    I’ve seen some Websites where you put your mouse over a link and more information pops up. How is this done? Dmitry

    There are several great wizards and tools around the Web that can help you create this effect quickly and easily. By far the best I’ve seen is this one from GUIStuff — it’s incredibly quick and easy to use and customize. Enjoy!

    The Popunder Low-Down

    Doc: I’d love to get the low-down on a simple pop under solution. I’ve got clients that want it for their intranet as a way to remind staff to do the obvious. Mark

    Pop under windows are often used in “hidden advertising” and can be a valuable tool. They are no more difficult to create then an automatic Popup — we simply have to add a line of code to our pop under window.

    First, let’s head on over to www.builder.com and make a Popop window script. We put this code between the <head> and </head> parts of the document:

    <script language="JavaScript">    
    <!-- hide from JavaScript-challenged browsers    
       
    function openWindow(url, name) {    
    popupWin = window.open(url, name, 'width=400,    
    height=600,left=100,top=100')    
    }    
       
    // done hiding -->    
    </script>

    The next step is to make this window popup as soon as the page loads, like this:

    <body onLoad="openWindow('http://www.sitepoint.com','newwin');">

    Now that we have opened the window automatically, we need to ensure that our new window hides itself. Simply add this line of code to the popup window, and you’re done!

    <body onLoad="window.blur();">
    Correction: Finicky Frames

    Last week I covered how to do multi-frame switching using JavaScript. First, the bit of JavaScript must be included in the Head of the document, like this:

    <html>    
    <head>    
    <script language="javascript" type="text/js">    
    <!--    
       
    function doSwitch(frame1,frame2,frame1loc,frame2loc)    
    {    
    top.frame1.location.href=frame1loc;    
    top.frame2.location.href=frame2loc;    
    }    
    // -->    
       
    </script>    
    </head>    
    <body>    
    <a href="javascript: doSwitch('main','top',    
    'main.asp','top.asp');"> test</a>    
    </body>    
    </html>

    I also misplaced a part of the <a href="href"… which has been adjusted. Your call line should now look like this:

    <a href="javascript: doSwitch('main','top',    
    'main.asp','top.asp');"> test</a>

    Essentially how this works is that we are calling the doSwitch() function which is expecting 4 parameters. 2 of these are the names of the frames where we’ll put our 2 pages. The other 2 are the file names of the 2 pages. So, we could reuse our code several times across several frames by changing these parameters to different values:

    <a href="javascript: doSwitch('main','top',    
    'main.asp','top.asp');"> test</a>    
       
    <a href="javascript: doSwitch('banner','main',    
    'banner2.asp','main2.asp');"> test</a>

    I hope this helps clarify some issues, and if there are ever any inconsistencies or you’re unsure about anything, feel free to let me know!

    Until next week, Spread the Love!
    Dr. Design

    Dr. DesignDr. Design
    View Author

    Dr Design answers design and development questions for SitePoint readers. Drop him a line today!

    Share this article
    Read Next
    Cloud Native: How Ampere Is Improving Nightly Arm64 Builds
    Cloud Native: How Ampere Is Improving Nightly Arm64 Builds
    Dave NearyAaron Williams
    How to Create Content in WordPress with AI
    How to Create Content in WordPress with AI
    Çağdaş Dağ
    A Beginner’s Guide to Setting Up a Project in Laravel
    A Beginner’s Guide to Setting Up a Project in Laravel
    Claudio Ribeiro
    Enhancing DevSecOps Workflows with Generative AI: A Comprehensive Guide
    Enhancing DevSecOps Workflows with Generative AI: A Comprehensive Guide
    Gitlab
    Creating Fluid Typography with the CSS clamp() Function
    Creating Fluid Typography with the CSS clamp() Function
    Daine Mawer
    Comparing Full Stack and Headless CMS Platforms
    Comparing Full Stack and Headless CMS Platforms
    Vultr
    7 Easy Ways to Make a Magento 2 Website Faster
    7 Easy Ways to Make a Magento 2 Website Faster
    Konstantin Gerasimov
    Powerful React Form Builders to Consider in 2024
    Powerful React Form Builders to Consider in 2024
    Femi Akinyemi
    Quick Tip: How to Animate Text Gradients and Patterns in CSS
    Quick Tip: How to Animate Text Gradients and Patterns in CSS
    Ralph Mason
    Sending Email Using Node.js
    Sending Email Using Node.js
    Craig Buckler
    Creating a Navbar in React
    Creating a Navbar in React
    Vidura Senevirathne
    A Complete Guide to CSS Logical Properties, with Cheat Sheet
    A Complete Guide to CSS Logical Properties, with Cheat Sheet
    Ralph Mason
    Using JSON Web Tokens with Node.js
    Using JSON Web Tokens with Node.js
    Lakindu Hewawasam
    How to Build a Simple Web Server with Node.js
    How to Build a Simple Web Server with Node.js
    Chameera Dulanga
    Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
    Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
    Beloslava Petrova
    Crafting Interactive Scatter Plots with Plotly
    Crafting Interactive Scatter Plots with Plotly
    Binara Prabhanga
    GenAI: How to Reduce Cost with Prompt Compression Techniques
    GenAI: How to Reduce Cost with Prompt Compression Techniques
    Suvoraj Biswas
    How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
    How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
    Aurelio De RosaMaria Antonietta Perna
    Quick Tip: How to Align Column Rows with CSS Subgrid
    Quick Tip: How to Align Column Rows with CSS Subgrid
    Ralph Mason
    15 Top Web Design Tools & Resources To Try in 2024
    15 Top Web Design Tools & Resources To Try in 2024
    SitePoint Sponsors
    7 Simple Rules for Better Data Visualization
    7 Simple Rules for Better Data Visualization
    Mariia Merkulova
    Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
    Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
    SitePoint Team
    Best Programming Language for AI
    Best Programming Language for AI
    Lucero del Alba
    Quick Tip: How to Add Gradient Effects and Patterns to Text
    Quick Tip: How to Add Gradient Effects and Patterns to Text
    Ralph Mason
    Logging Made Easy: A Beginner’s Guide to Winston in Node.js
    Logging Made Easy: A Beginner’s Guide to Winston in Node.js
    Vultr
    How to Optimize Website Content for Featured Snippets
    How to Optimize Website Content for Featured Snippets
    Dipen Visavadiya
    Psychology and UX: Decoding the Science Behind User Clicks
    Psychology and UX: Decoding the Science Behind User Clicks
    Tanya Kumari
    Build a Full-stack App with Node.js and htmx
    Build a Full-stack App with Node.js and htmx
    James Hibbard
    Digital Transformation with AI: The Benefits and Challenges
    Digital Transformation with AI: The Benefits and Challenges
    Priyanka Prajapat
    Quick Tip: Creating a Date Picker in React
    Quick Tip: Creating a Date Picker in React
    Dianne Pena
    How to Create Interactive Animations Using React Spring
    How to Create Interactive Animations Using React Spring
    Yemi Ojedapo
    10 Reasons to Love Google Docs
    10 Reasons to Love Google Docs
    Joshua KrausZain Zaidi
    How to Use Magento 2 for International Ecommerce Success
    How to Use Magento 2 for International Ecommerce Success
    Mitul Patel
    5 Exciting New JavaScript Features in 2024
    5 Exciting New JavaScript Features in 2024
    Olivia GibsonDarren Jones
    Tools and Strategies for Efficient Web Project Management
    Tools and Strategies for Efficient Web Project Management
    Juliet Ofoegbu
    Choosing the Best WordPress CRM Plugin for Your Business
    Choosing the Best WordPress CRM Plugin for Your Business
    Neve Wilkinson
    ChatGPT Plugins for Marketing Success
    ChatGPT Plugins for Marketing Success
    Neil Jordan
    Managing Static Files in Django: A Comprehensive Guide
    Managing Static Files in Django: A Comprehensive Guide
    Kabaki Antony
    The Ultimate Guide to Choosing the Best React Website Builder
    The Ultimate Guide to Choosing the Best React Website Builder
    Dianne Pena
    Exploring the Creative Power of CSS Filters and Blending
    Exploring the Creative Power of CSS Filters and Blending
    Joan Ayebola
    How to Use WebSockets in Node.js to Create Real-time Apps
    How to Use WebSockets in Node.js to Create Real-time Apps
    Craig Buckler
    Best Node.js Framework Choices for Modern App Development
    Best Node.js Framework Choices for Modern App Development
    Dianne Pena
    SaaS Boilerplates: What They Are, And 10 of the Best
    SaaS Boilerplates: What They Are, And 10 of the Best
    Zain Zaidi
    Understanding Cookies and Sessions in React
    Understanding Cookies and Sessions in React
    Blessing Ene Anyebe
    Enhanced Internationalization (i18n) in Next.js 14
    Enhanced Internationalization (i18n) in Next.js 14
    Emmanuel Onyeyaforo
    Essential React Native Performance Tips and Tricks
    Essential React Native Performance Tips and Tricks
    Shaik Mukthahar
    How to Use Server-sent Events in Node.js
    How to Use Server-sent Events in Node.js
    Craig Buckler
    Five Simple Ways to Boost a WooCommerce Site’s Performance
    Five Simple Ways to Boost a WooCommerce Site’s Performance
    Palash Ghosh
    Elevate Your Online Store with Top WooCommerce Plugins
    Elevate Your Online Store with Top WooCommerce Plugins
    Dianne Pena
    Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
    Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
    Dianne Pena
    How to Build a Chat Interface using Gradio & Vultr Cloud GPU
    How to Build a Chat Interface using Gradio & Vultr Cloud GPU
    Vultr
    Enhance Your React Apps with ShadCn Utilities and Components
    Enhance Your React Apps with ShadCn Utilities and Components
    David Jaja
    10 Best Create React App Alternatives for Different Use Cases
    10 Best Create React App Alternatives for Different Use Cases
    Zain Zaidi
    Control Lazy Load, Infinite Scroll and Animations in React
    Control Lazy Load, Infinite Scroll and Animations in React
    Blessing Ene Anyebe
    Building a Research Assistant Tool with AI and JavaScript
    Building a Research Assistant Tool with AI and JavaScript
    Mahmud Adeleye
    Understanding React useEffect
    Understanding React useEffect
    Dianne Pena
    Web Design Trends to Watch in 2024
    Web Design Trends to Watch in 2024
    Juliet Ofoegbu
    Building a 3D Card Flip Animation with CSS Houdini
    Building a 3D Card Flip Animation with CSS Houdini
    Fred Zugs
    How to Use ChatGPT in an Unavailable Country
    How to Use ChatGPT in an Unavailable Country
    Dianne Pena
    An Introduction to Node.js Multithreading
    An Introduction to Node.js Multithreading
    Craig Buckler
    How to Boost WordPress Security and Protect Your SEO Ranking
    How to Boost WordPress Security and Protect Your SEO Ranking
    Jaya Iyer
    Understanding How ChatGPT Maintains Context
    Understanding How ChatGPT Maintains Context
    Dianne Pena
    Building Interactive Data Visualizations with D3.js and React
    Building Interactive Data Visualizations with D3.js and React
    Oluwabusayo Jacobs
    JavaScript vs Python: Which One Should You Learn First?
    JavaScript vs Python: Which One Should You Learn First?
    Olivia GibsonDarren Jones
    13 Best Books, Courses and Communities for Learning React
    13 Best Books, Courses and Communities for Learning React
    Zain Zaidi
    5 jQuery.each() Function Examples
    5 jQuery.each() Function Examples
    Florian RapplJames Hibbard
    Implementing User Authentication in React Apps with Appwrite
    Implementing User Authentication in React Apps with Appwrite
    Yemi Ojedapo
    AI-Powered Search Engine With Milvus Vector Database on Vultr
    AI-Powered Search Engine With Milvus Vector Database on Vultr
    Vultr
    Understanding Signals in Django
    Understanding Signals in Django
    Kabaki Antony
    Why React Icons May Be the Only Icon Library You Need
    Why React Icons May Be the Only Icon Library You Need
    Zain Zaidi
    View Transitions in Astro
    View Transitions in Astro
    Tamas Piros
    Getting Started with Content Collections in Astro
    Getting Started with Content Collections in Astro
    Tamas Piros
    What Does the Java Virtual Machine Do All Day?
    What Does the Java Virtual Machine Do All Day?
    Peter Kessler
    Become a Freelance Web Developer on Fiverr: Ultimate Guide
    Become a Freelance Web Developer on Fiverr: Ultimate Guide
    Mayank Singh
    Layouts in Astro
    Layouts in Astro
    Tamas Piros
    .NET 8: Blazor Render Modes Explained
    .NET 8: Blazor Render Modes Explained
    Peter De Tender
    Mastering Node CSV
    Mastering Node CSV
    Dianne Pena
    A Beginner’s Guide to SvelteKit
    A Beginner’s Guide to SvelteKit
    Erik KückelheimSimon Holthausen
    Brighten Up Your Astro Site with KwesForms and Rive
    Brighten Up Your Astro Site with KwesForms and Rive
    Paul Scanlon
    Which Programming Language Should I Learn First in 2024?
    Which Programming Language Should I Learn First in 2024?
    Joel Falconer
    Managing PHP Versions with Laravel Herd
    Managing PHP Versions with Laravel Herd
    Dianne Pena
    Accelerating the Cloud: The Final Steps
    Accelerating the Cloud: The Final Steps
    Dave Neary
    An Alphebetized List of MIME Types
    An Alphebetized List of MIME Types
    Dianne Pena
    The Best PHP Frameworks for 2024
    The Best PHP Frameworks for 2024
    Claudio Ribeiro
    11 Best WordPress Themes for Developers & Designers in 2024
    11 Best WordPress Themes for Developers & Designers in 2024
    SitePoint Sponsors
    Top 10 Best WordPress AI Plugins of 2024
    Top 10 Best WordPress AI Plugins of 2024
    Dianne Pena
    20+ Tools for Node.js Development in 2024
    20+ Tools for Node.js Development in 2024
    Dianne Pena
    The Best Figma Plugins to Enhance Your Design Workflow in 2024
    The Best Figma Plugins to Enhance Your Design Workflow in 2024
    Dianne Pena
    Harnessing the Power of Zenserp for Advanced Search Engine Parsing
    Harnessing the Power of Zenserp for Advanced Search Engine Parsing
    Christopher Collins
    Build Your Own AI Tools in Python Using the OpenAI API
    Build Your Own AI Tools in Python Using the OpenAI API
    Zain Zaidi
    The Best React Chart Libraries for Data Visualization in 2024
    The Best React Chart Libraries for Data Visualization in 2024
    Dianne Pena
    7 Free AI Logo Generators to Get Started
    7 Free AI Logo Generators to Get Started
    Zain Zaidi
    Turn Your Vue App into an Offline-ready Progressive Web App
    Turn Your Vue App into an Offline-ready Progressive Web App
    Imran Alam
    Clean Architecture: Theming with Tailwind and CSS Variables
    Clean Architecture: Theming with Tailwind and CSS Variables
    Emmanuel Onyeyaforo
    How to Analyze Large Text Datasets with LangChain and Python
    How to Analyze Large Text Datasets with LangChain and Python
    Matt Nikonorov
    6 Techniques for Conditional Rendering in React, with Examples
    6 Techniques for Conditional Rendering in React, with Examples
    Yemi Ojedapo
    Introducing STRICH: Barcode Scanning for Web Apps
    Introducing STRICH: Barcode Scanning for Web Apps
    Alex Suzuki
    Using Nodemon and Watch in Node.js for Live Restarts
    Using Nodemon and Watch in Node.js for Live Restarts
    Craig Buckler
    Task Automation and Debugging with AI-Powered Tools
    Task Automation and Debugging with AI-Powered Tools
    Timi Omoyeni
    Quick Tip: Understanding React Tooltip
    Quick Tip: Understanding React Tooltip
    Dianne Pena
    Get the freshest news and resources for developers, designers and digital creators in your inbox each week