www.webdeveloper.com
Results 1 to 2 of 2

Thread: [RESOLVED] iframe html

  1. #1
    Join Date
    Aug 2010
    Posts
    51

    resolved [RESOLVED] iframe html

    I'm making a function that uses a dynamically created form and iframe to simulate ajax without the domain constraints. I've gotten the user function to call but my problem is that I cannot find any information that allows me to get all the html as plain text not just what's inside the root element ( meaning I want the doctype too ).

    If anyone knows how to do this I would be grateful. Here is my code so far:
    Code:
    function xCjax( info, call, calldata )
    {
    	var x, url, method = "GET", body, form, iframe, i, txt, icall;
    	if ( typeof call !== 'function' )
    	{
    		throw new TypeError( 'xAjax( info, call, calldata )\n' +
    			'"call" must be function, quitting' );
    		return;
    	}
    	form   = document.createElement( 'form' );
    	if ( typeof info === 'object' )
    	{
    		url    = info.url;
    		method = info.method;
    		try
    		{
    			x = info.data;
    			for ( i = 0; i < x.length; ++i )
    			{
    				txt = '<input id="' + x[ i ][ 0 ] + '" name="' +
    					x[ i ][ 0 ] + '" value="' + x[ i ][ 1 ] + '" />';
    				form.innerHTML += txt;
    			}
    		}
    		catch ( e )
    		{
    			// NO ACTION
    		}
    	}
    	else
    	{
    		url    = info;
    	}
    	form.action = url;
    	form.method = method;
    	form.target = 'xAjax';
    	iframe = document.createElement( 'iframe' );
    	iframe.id   = 'xAjax';
    	iframe.name = 'xAjax';
    	iframe.onload = function ()
    	{
    		try
    		{
    			x = iframe.contentDocument;
    		}
    		catch ( e )
    		{
    			x = iframe.contentWindow.document;
    		}
    		state = x.readyState;
    		call( x.innerText, calldata );
    		body.removeChild( iframe );
    	};
    	iframe.src = 'about:blank';
    	xAttrSet( iframe, 'style', 'display: none' );
    	body = xOne( 'body' );
    	body.appendChild( iframe );
    	form.submit();
    }

  2. #2
    Join Date
    Aug 2010
    Posts
    51
    Never mind, found a way ( even if it is annoying ).
    Code:
    function xOuterML( x )
    {
    	var txt, xs, d = x.documentElement, node, from;
    	if ( d )
    	{
    		x = d;
    	}
    	node = x.cloneNode( true );
    	node.innerHTML = '';
    	xs = new XMLSerializer();
    	txt = xs.serializeToString( node );
    	from = txt.indexOf( 'head>' ) - 1;
    	if ( from > 0 )
    	{
    		txt = txt.slice( 0, from ) + '</' + node.nodeName + '>';
    	}
    	return txt;
    }
    function xDocHTML( x )
    {
    	var node = x.documentElement, tmp = x.doctype, txt = '';
    	if ( tmp )
    	{
    		txt += '<!doctype html';
    		if ( typeof tmp == 'string' )
    		{
    			txt += ' ' + x.doctype;
    		}
    		txt += '>';
    	}
    	txt += '>\n' + xOuterML( node );
    	txt = txt.slice( 0, txt.indexOf( '><' ) ) + '>';
    	txt += node.innerHTML + '</' + node.nodeName + '>';
    	return txt;
    }
    function xCjax( info, call, calldata )
    {
    	var x, url = info.url, method = info.method,
    		body, form, iframe, i, txt;
    	form   = document.createElement( 'form' );
    	if ( typeof info === 'object' )
    	{
    		if ( method.toLowerCase() !== 'post' )
    		{
    			method = 'GET';
    		}
    		else
    		{
    			method = 'POST';
    		}
    		try
    		{
    			x = info.data;
    			for ( i = 0; i < x.length; ++i )
    			{
    				txt = '<input id="' + x[ i ][ 0 ] + '" name="' +
    					x[ i ][ 0 ] + '" value="' + x[ i ][ 1 ] + '" />';
    				form.innerHTML += txt;
    			}
    		}
    		catch ( e )
    		{
    			/* NO ACTION */
    		}
    	}
    	else
    	{
    		url = info;
    	}
    	form.action = url;
    	form.method = method;
    	form.target = 'xAjax';
    	iframe = document.createElement( 'iframe' );
    	iframe.id   = 'xAjax';
    	iframe.name = 'xAjax';
    	iframe.onload = function ()
    	{
    		try
    		{
    			x = iframe.contentDocument;
    		}
    		catch ( e )
    		{
    			x = iframe.contentWindow.document;
    		}
    		if ( x )
    		{
    			if ( x.links.length > 0 )
    			{
    				txt = xDocHTML( x );
    			}
    			else
    			{
    				txt = xOne( 'pre', x );
    				if ( txt )
    				{
    					txt = txt.innerHTML;
    				}
    				else
    				{
    					txt = '';
    				}
    			}
    			call( txt, calldata );
    			xHead.removeChild( iframe );
    		}
    	};
    	xAttrSet( form, 'style', 'display: none' );
    	xAttrSet( iframe, 'style', 'display: none' );
    	xHead.appendChild( form );
    	xHead.appendChild( iframe );
    	form.submit();
    }
    function xCjaxHtml( info, call, calldata )
    {
    	xCjax( info, function ( x, data )
    		{
    			var d;
    			try
    			{
    				d = new DOMParser();
    				d = d.parseFromString( x ,"text/html");
    			}
    			catch ( e )
    			{
    				d = null;
    			}
    			data[ 0 ]( d, data[ 1 ] );
    		}, [ call, calldata ] );
    }

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.15214 seconds
  • Memory Usage 2,845KB
  • Queries Executed 15 (?)
More Information
Template Usage (33):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (2)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (72):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates