diff -urNp extlink/extlink_frameset.tpl.php extlink_my//extlink_frameset.tpl.php
--- extlink/extlink_frameset.tpl.php	1970-01-01 03:00:00.000000000 +0300
+++ extlink_my//extlink_frameset.tpl.php	2011-06-10 15:14:28.192557007 +0400
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
+  "http://www.w3.org/TR/html4/frameset.dtd">
+<?php
+// $Id: extlink_frameset.tpl.php,
+
+/**
+ * @file extlink_frameset.tpl.php
+ * Default theme implementation for a frameset to display external links.
+ *
+ * Available variables:
+ * - $head_title: Page title suitable for <head>.
+ * - $src: URL to the originating feed item.
+ * - $ext: URL of page to display in 'external' frame "ext_frame".
+ * - $height: Specifies height of 'external' frame. Either a number (pixels) or a percentage.
+ *
+ * @see template_preprocess()
+ */
+?>
+<html>
+<head>
+  <title><?php print $head_title; ?></title>
+</head>
+<frameset rows="*, <?php print $height; ?>">
+  <frame src="/<?php print $src; ?>" />
+  <frame name="ext_frame" src="<?php print $ext; ?>" />
+  <noframes>
+    <h2>Error:</h2><p>Either your browser does not support frames or you have them switched off.</p>
+    <p>This page cannot be dislayed as intended without frames.</p>
+    <p>Please update or configure your browser and refresh the page.</p>
+  </noframes>
+</frameset>
+</html>
+
diff -urNp extlink/extlink_iframe.tpl.php extlink_my//extlink_iframe.tpl.php
--- extlink/extlink_iframe.tpl.php	1970-01-01 03:00:00.000000000 +0300
+++ extlink_my//extlink_iframe.tpl.php	2011-06-10 15:15:00.232557007 +0400
@@ -0,0 +1,20 @@
+<?php
+// $Id: extlink_iframe.tpl.php,
+
+/**
+ * @file extlink_iframe.tpl.php
+ * Default theme implementation for a frameset to display external links.
+ *
+ * Available variables:
+ * - $ext: URL of page to display in 'external' frame "ext_frame".
+ * - $protocol: Protocol used to access $ext.
+ * - $height: Specifies height of 'external' frame. Number of pixels.
+ * - $width: Specifies width of 'external' frame. Number of pixels.
+ *
+ * @see template_preprocess()
+ */
+?><iframe name="ext_frame" src="<?php print $ext; ?>" width="<?php print $width; ?>" height="<?php print $height; ?>">
+  <h2>Error:</h2><p>Either your browser does not support iframes or you have them switched off.</p>
+  <p>This page cannot be dislayed as intended without iframes.</p>
+  <p>Please update or configure your browser and refresh the page.</p>
+</iframe>
diff -urNp extlink/extlink.js extlink_my//extlink.js
--- extlink/extlink.js	2010-05-26 05:25:56.000000000 +0400
+++ extlink_my//extlink.js	2011-06-10 15:06:42.782557006 +0400
@@ -80,8 +80,26 @@ function extlinkAttach(context) {
   }
 
   if (Drupal.settings.extlink.extTarget) {
-    // Apply the target attribute to all links.
-    $(external_links).attr('target', Drupal.settings.extlink.extTarget);
+      // If link should open in an iframe or frameset, we will also need to remove the target attribute.
+      if (Drupal.settings.extlink.extTarget == "ext_iframe") {
+        // Prefix current href with instruction to wrap with iframe template.
+        $(external_links).attr('href', function() {
+          return "/extlink_iframe/" + $(this).attr('href').replace(/^https?:\/\//, "")
+        });
+        $(external_links).removeAttr('target');
+      }
+      else if (Drupal.settings.extlink.extTarget == "ext_frame" && (top.location == self.location)) {
+        // If we should open external links in a frameset && not already in a frameset.
+        // Construct a url from the current path, a separator and current href without protocol.
+        // This will specify the two src's for two frames in a frameset.
+        $(external_links).attr('href', function() {
+          return "/extlink_frame" + document.location.pathname.replace(/\/$/, "") +  "/--/" + $(this).attr('href').replace(/^https?:\/\//, "")
+        });
+        $(external_links).removeAttr('target');
+      } else {
+        // Apply the target attribute to all links which have not been modified to open in an iframe or frameset.
+       $(external_links).attr('target', Drupal.settings.extlink.extTarget)
+      }
   }
 
   if (Drupal.settings.extlink.extAlert) {
diff -urNp extlink/extlink.module extlink_my//extlink.module
--- extlink/extlink.module	2010-05-26 05:23:47.000000000 +0400
+++ extlink_my//extlink.module	2011-06-10 15:13:36.352557006 +0400
@@ -11,6 +11,18 @@ function extlink_menu() {
     'access callback' => 'user_access',
     'access arguments' => array('administer site configuration'),
   );
+  $items['extlink_frame'] = array(
+    'title' => 'Frame',
+    'page callback' => 'extlink_frame',
+    'access arguments' => array('access frame'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['extlink_iframe'] = array(
+    'title' => 'iFrame',
+    'page callback' => 'extlink_iframe',
+    'access arguments' => array('access frame'),
+    'type' => MENU_CALLBACK,
+  );
   return $items;
 }
 
@@ -20,7 +32,7 @@ function extlink_menu() {
 function extlink_init() {
   $path = drupal_get_path('module', 'extlink');
   $settings = array(
-    'extTarget'     => variable_get('extlink_target', 0),
+    'extTarget'     => variable_get('extlink_target', '_self'),
     'extClass'      => variable_get('extlink_class', 'ext'),
     'extSubdomains' => variable_get('extlink_subdomains', 1),
     'extExclude'    => variable_get('extlink_exclude', ''),
@@ -68,11 +80,29 @@ function extlink_admin_settings() {
   );
 
   $form['extlink_target'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Open external links in a new window'),
-    '#return_value' => '_blank',
-    '#default_value' => variable_get('extlink_target', 0),
-    '#description' => t('Should all external links be opened in a new window?'),
+    '#type' => 'radios',
+    '#title' => t('How external links should be opened'),
+    '#options' => array('_self' => 'The same window', '_blank' => 'A new window/tab', 'ext_iframe' => 'In an iFrame', 'ext_frame' => 'In a Frameset'),
+    '#default_value' => variable_get('extlink_target', '_self'),
+    '#description' =>  t('Sets the target location for all external links. \'The same window\' is the default.'),
+   );
+   
+  $form['extlink_height'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Height of frame for external links'),
+    '#default_value' => variable_get('extlink_height', '35%'),
+    '#description' =>  t('Sets the height of target frame for all external links. Can be over-ridden by css.'),
+    '#size' => 4,
+    '#maxlength' => 4,
+  );
+
+  $form['extlink_width'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Width of frame for external links'),
+    '#default_value' => variable_get('extlink_width', '75%'),
+    '#description' =>  t('Sets the width of target frame for all external links. (only applies to In an iFrame). Can be over-ridden by css.'),
+    '#size' => 4,
+    '#maxlength' => 4,
   );
 
   $form['extlink_alert'] = array(
@@ -143,3 +173,42 @@ function extlink_admin_settings() {
 
   return system_settings_form($form);
 }
+
+function extlink_iframe() {
+  $arg_list = arg();
+  // Remove the /extlink_iframe/ 'instruction' from start of url, that specified this function.
+  array_shift($arg_list);
+  $ext_page = 'http://' . implode('/', $arg_list);
+  
+  return theme('extlink_iframe', $ext_page, variable_get('extlink_width', '75%'), variable_get('extlink_height', '35%'));
+}
+function extlink_frame() {
+  $arg_list = arg();
+  // Remove the /extlink_frame/ 'instruction' from start of url, that specified this function.
+  // and use separator '--' to split rest of url into two, for the two frames in frameset.
+  $term = array_search('--', $arg_list);
+  $src_page = implode('/', array_slice($arg_list, 1, $term - 1));
+  $ext_page = 'http://' . implode('/', array_slice($arg_list, $term + 1));
+  
+  // Construct page title
+  $head_title = variable_get('site_name', 'Drupal');
+  if (variable_get('site_slogan', '')) {
+    $head_title .= ' | ' . variable_get('site_slogan', '');
+  }
+ 
+  print theme('extlink_frameset', $head_title, $src_page, $ext_page, variable_get('extlink_height', '35%'));
+}
+function extlink_theme() {
+  return array(
+    'extlink_iframe' => array(
+      'template' => 'extlink_iframe',
+      'arguments' => array('ext' => NULL, 'width' => '75%', 'height' => '35%'),
+    ),
+    'extlink_frameset' => array(
+      'template' => 'extlink_frameset',
+      'arguments' => array('head_title' => NULL, 'src' => '/', 'ext' => NULL, 'height' => '35%'),
+    ),
+  );
+}
+
+
