merge from dev
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 693 B |
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$type = $_REQUEST['content-type'];
|
||||
header("Content-type: $type");
|
||||
echo $_REQUEST['response']
|
||||
?>
|
||||
@@ -0,0 +1 @@
|
||||
ok( "<?php echo $_SERVER['REQUEST_METHOD'] ?>" === "GET", "request method is <?php echo $_SERVER['REQUEST_METHOD'] ?>" );
|
||||
@@ -0,0 +1 @@
|
||||
<?php echo $_SERVER['REQUEST_METHOD'] ?>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
||||
<title>onunload ajax requests (#14379)</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form id="navigate" action="../iframe.html"></form>
|
||||
<script>
|
||||
jQuery( window ).on( "unload", function() {
|
||||
var ajaxStatus;
|
||||
jQuery.ajax({
|
||||
url: "../name.html",
|
||||
async: false,
|
||||
complete: function( xhr, status ) {
|
||||
ajaxStatus = status;
|
||||
}
|
||||
});
|
||||
parent.iframeCallback( ajaxStatus );
|
||||
});
|
||||
|
||||
jQuery(function() {
|
||||
setTimeout(function() {
|
||||
document.getElementById( "navigate" ).submit();
|
||||
}, 0 );
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Attempt to block tests because of dangling XHR requests (IE)</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript">
|
||||
window.onunload = function() {};
|
||||
jQuery(function() {
|
||||
setTimeout(function() {
|
||||
var parent = window.parent;
|
||||
document.write("");
|
||||
parent.iframeCallback();
|
||||
}, 200 );
|
||||
var number = 50;
|
||||
while( number-- ) {
|
||||
jQuery.ajax("../name.php?wait=10");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- empty body -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php header("Content-type: atom+xml") ?>
|
||||
<root>
|
||||
<element />
|
||||
</root>
|
||||
@@ -0,0 +1 @@
|
||||
undefined();
|
||||
@@ -0,0 +1 @@
|
||||
{bad: toTheBone;}
|
||||
@@ -0,0 +1,10 @@
|
||||
<script>
|
||||
<!--
|
||||
ok( true, "script within html comments executed" );
|
||||
-->
|
||||
</script>
|
||||
<script>
|
||||
<![CDATA[
|
||||
ok( true, "script within CDATA executed" );
|
||||
]]>
|
||||
</script>
|
||||
@@ -0,0 +1,24 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
||||
<title>alias-masked DOM properties (#14074)</title>
|
||||
<script>
|
||||
var errors = [];
|
||||
window.onerror = function( errorMessage, filePath, lineNumber ) {
|
||||
errors.push( errorMessage );
|
||||
};
|
||||
</script>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input type="text" id="nodeName"/>
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function() {
|
||||
window.parent.iframeCallback( errors );
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<script>
|
||||
var cc_on = false,
|
||||
errors = [];
|
||||
/*@cc_on
|
||||
cc_on = true;
|
||||
@*/
|
||||
window.onerror = function( errorMessage, filePath, lineNumber ) {
|
||||
errors.push( errorMessage );
|
||||
};
|
||||
</script>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
window.parent.iframeCallback( cc_on, errors, jQuery );
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
sleep(30);
|
||||
?>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>var $j = jQuery.noConflict();</script>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="dont_return" src="dont_return.php"></iframe>
|
||||
<script>
|
||||
var timeoutId, $,
|
||||
timeoutFired = false;
|
||||
|
||||
setTimeout(function () {
|
||||
// Load another jQuery copy using the first one.
|
||||
$j.getScript( "../../../dist/jquery.js", function () {
|
||||
$j( "#dont_return" ).attr( "src", "about:blank" );
|
||||
|
||||
// document ready handled by the just-loaded jQuery copy.
|
||||
$(function () {
|
||||
clearTimeout( timeoutId );
|
||||
if ( !timeoutFired ) {
|
||||
window.parent.iframeCallback( true );
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
timeoutId = setTimeout(function () {
|
||||
timeoutFired = true;
|
||||
window.parent.iframeCallback( false );
|
||||
}, 10000);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,24 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
||||
<title>alias-masked DOM properties (#14074)</title>
|
||||
<script>
|
||||
var error = false;
|
||||
window.onready = function() { error = "Called window.onready"; };
|
||||
</script>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input type="text" id="nodeName"/>
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function() {
|
||||
setTimeout( function() {
|
||||
window.parent.iframeCallback( error );
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
#test {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="test"></div>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
window.parent.iframeCallback( jQuery( "#test" ).css( 'width' ) );
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dashboard>
|
||||
<locations class="foo">
|
||||
<location for="bar" checked="different">
|
||||
<infowindowtab>
|
||||
<tab title="Location"><![CDATA[blabla]]></tab>
|
||||
<tab title="Users"><![CDATA[blublu]]></tab>
|
||||
</infowindowtab>
|
||||
</location>
|
||||
</locations>
|
||||
</dashboard>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>IE11 onpageshow strangeness (#14894)</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
$(function(){
|
||||
window.parent.iframeCallback( $( "body" ).data().result );
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body x-what="test" data-result="ok" onload="x=1" onpageshow="x=1">
|
||||
Test for #14894
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style>
|
||||
body {
|
||||
width: 1000px;
|
||||
height: 1000px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<script src="../../jquery.js"></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
<?php echo file_get_contents('php://input'); ?>
|
||||
@@ -0,0 +1 @@
|
||||
<?php echo $_SERVER['QUERY_STRING']; ?>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
header("HTTP/1.0 400 Bad Request");
|
||||
header("Content-Type: application/json");
|
||||
|
||||
echo '{ "code": 40, "message": "Bad Request" }';
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header("HTTP/1.0 400 Bad Request");
|
||||
|
||||
echo "plain text message";
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
|
||||
$ts = $_REQUEST['ts'];
|
||||
$etag = md5($ts);
|
||||
|
||||
$ifNoneMatch = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : "";
|
||||
preg_match('/"([^"]+)"/', $ifNoneMatch, $matches);
|
||||
$ifNoneMatch = isset($matches[1]) ? $matches[1] : false;
|
||||
|
||||
if ($ifNoneMatch == $etag) {
|
||||
header('HTTP/1.0 304 Not Modified');
|
||||
die; // stop processing
|
||||
}
|
||||
|
||||
header("Etag: W/\"" . $etag . "\"");
|
||||
|
||||
if ( $ifNoneMatch ) {
|
||||
echo "OK: " . $etag;
|
||||
} else {
|
||||
echo "FAIL";
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>.focus() (activeElement access #13393)</title>
|
||||
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<a href="#" id="frame-link"></a>
|
||||
<script>
|
||||
jQuery( "#frame-link" ).trigger( "focus" );
|
||||
window.parent.iframeCallback( true );
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>focusin event cross-frame (#14180)</title>
|
||||
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<input type="text" id="frame-input" />
|
||||
<script>
|
||||
// Call parent when this frame is fully loaded, it will mess with #frame-input
|
||||
jQuery( window ).one( "load", function() {
|
||||
window.parent.iframeCallback( document );
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for gh-2100</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready(function () {
|
||||
window.parent.iframeCallback( jQuery("#container").length === 1 );
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- external resources that come before elements trick
|
||||
oldIE into thinking the dom is ready, but it's not...
|
||||
leaving this check here for future trailblazers to attempt
|
||||
fixing this...-->
|
||||
<script type="text/javascript" src="../longLoadScript.php?sleep=1"></script>
|
||||
<div id="container" style="height: 300px"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
sleep((int)$_GET['sleep']);
|
||||
header('Content-type: text/javascript');
|
||||
?>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
function report( event ) {
|
||||
var payload = {
|
||||
event: event.type
|
||||
};
|
||||
return parent.postMessage( JSON.stringify(payload), "*" );
|
||||
}
|
||||
|
||||
jQuery( window ).on( "beforeunload", function( event ) {
|
||||
report( event );
|
||||
}).on( "load", function( event ) {
|
||||
setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 50);
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for jQuery ticket #11470</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery.when( jQuery.ready ).done(function() {
|
||||
jQuery("body").append("<div>modifying DOM</div>");
|
||||
window.parent.iframeCallback( $("div").text() === "modifying DOM" );
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- empty body -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for jQuery ticket #10067</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready(function () {
|
||||
window.parent.iframeCallback( jQuery('#container').length === 1 );
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- external resources that come before elements trick
|
||||
oldIE into thinking the dom is ready, but it's not...
|
||||
leaving this check here for future trailblazers to attempt
|
||||
fixing this...-->
|
||||
<script type="text/javascript" src="longLoadScript.php?sleep=1"></script>
|
||||
<div id="container" style="height: 300px"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
var called = false,
|
||||
error = false;
|
||||
|
||||
window.onerror = function() { error = true; };
|
||||
|
||||
jQuery( window ).on( "beforeunload", function( event ) {
|
||||
called = true;
|
||||
return "maybe";
|
||||
}).on( "load", function( event ) {
|
||||
$( window ).triggerHandler( "beforeunload" );
|
||||
window.parent.iframeCallback( called && !error );
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
header( "Sample-Header: Hello World" );
|
||||
header( "Empty-Header: " );
|
||||
header( "Sample-Header2: Hello World 2" );
|
||||
|
||||
$headers = array();
|
||||
|
||||
foreach( $_SERVER as $key => $value ) {
|
||||
|
||||
$key = str_replace( "_" , "-" , substr( $key , 0 , 5 ) == "HTTP_" ? substr( $key , 5 ) : $key );
|
||||
$headers[ $key ] = $value;
|
||||
|
||||
}
|
||||
|
||||
foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) {
|
||||
|
||||
// Only echo if key exists in the header
|
||||
if ( isset( $headers[ strtoupper( $key ) ] ) ) {
|
||||
echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
|
||||
$ts = $_REQUEST['ts'];
|
||||
|
||||
$ifModifiedSince = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) : false;
|
||||
if ($ifModifiedSince == $ts) {
|
||||
header('HTTP/1.0 304 Not Modified');
|
||||
die; // stop processing
|
||||
}
|
||||
|
||||
header("Last-Modified: " . $ts);
|
||||
|
||||
if ( $ifModifiedSince ) {
|
||||
echo "OK: " . $ts;
|
||||
} else {
|
||||
echo "FAIL";
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>iframe</title>
|
||||
</head>
|
||||
<body>
|
||||
<div><span>span text</span></div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
if ( $_REQUEST['header'] ) {
|
||||
header("Content-type: application/json");
|
||||
}
|
||||
|
||||
$json = $_REQUEST['json'];
|
||||
if($json) {
|
||||
echo '[ {"name": "John", "age": 21}, {"name": "Peter", "age": 25 } ]';
|
||||
} else {
|
||||
echo '{ "data": {"lang": "en", "length": 25} }';
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1 @@
|
||||
{ "data": {"lang": "en", "length": 25} }
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
$callback = $_REQUEST['callback'];
|
||||
if ( ! $callback ) {
|
||||
$callback = explode("?",end(explode("/",$_SERVER['REQUEST_URI'])));
|
||||
$callback = $callback[0];
|
||||
}
|
||||
$json = $_REQUEST['json'];
|
||||
if($json) {
|
||||
echo $callback . '([ {"name": "John", "age": 21}, {"name": "Peter", "age": 25 } ])';
|
||||
} else {
|
||||
echo $callback . '({ "data": {"lang": "en", "length": 25} })';
|
||||
}
|
||||
?>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8 />
|
||||
<title>body</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit-fixture"></div>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
var script = document.getElementsByTagName( "script" )[ 0 ],
|
||||
div = document.createElement( "div" ),
|
||||
src = "http://" + window.parent.externalHost,
|
||||
success = true,
|
||||
error = "";
|
||||
|
||||
script.parentNode.appendChild( div );
|
||||
div.innerHTML = "<iframe name=\"test\" src=\"" + src + "\">";
|
||||
|
||||
jQuery(function() {
|
||||
try {
|
||||
jQuery( "<div>hello<div>world</div>!</div>" ).appendTo( "#qunit-fixture" );
|
||||
} catch( e ) {
|
||||
success = false;
|
||||
error = e;
|
||||
}
|
||||
|
||||
window.parent.iframeCallback({
|
||||
status: success,
|
||||
description: "buildFragment sets the context without throwing an exception" +
|
||||
( error ? ": " + error : "" )
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
ERROR <script type="text/javascript">ok( true, "name.html retrieved" );</script>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
$wait = $_REQUEST['wait'];
|
||||
if($wait) {
|
||||
sleep($wait);
|
||||
}
|
||||
$xml = $_REQUEST['xml'];
|
||||
if($xml) {
|
||||
header("Content-type: text/xml");
|
||||
$result = ($xml == "5-2") ? "3" : "?";
|
||||
echo "<math><calculation>$xml</calculation><result>$result</result></math>";
|
||||
die();
|
||||
}
|
||||
$name = $_REQUEST['name'];
|
||||
if($name == 'foo') {
|
||||
echo "bar";
|
||||
die();
|
||||
} else if($name == 'peter') {
|
||||
echo "pan";
|
||||
die();
|
||||
}
|
||||
|
||||
echo 'ERROR <script type="text/javascript">ok( true, "name.php executed" );</script>';
|
||||
?>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header('HTTP/1.0 204 No Content');
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>absolute</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
div.absolute { position: absolute; margin: 1px; border: 2px solid #000; padding: 5px; width: 100px; height: 100px; background: #fff; }
|
||||
#absolute-1 { top: 0; left: 0; }
|
||||
#absolute-1-1 { top: 1px; left: 1px; }
|
||||
#absolute-1-1-1 { top: 1px; left: 1px; }
|
||||
#absolute-2 { top: 19px; left: 19px; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
p.instructions { position: absolute; bottom: 0; }
|
||||
#positionTest { position: absolute; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
$(".absolute").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
var pos = $(this).position();
|
||||
$(this).css({ top: pos.top, left: pos.left });
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="absolute-1" class="absolute">absolute-1
|
||||
<div id="absolute-1-1" class="absolute">absolute-1-1
|
||||
<div id="absolute-1-1-1" class="absolute">absolute-1-1-1</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="absolute-2" class="absolute">absolute-2</div>
|
||||
<div id="positionTest">Has absolute position but no values set for the location ('auto').</div>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>body</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; position: relative }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
#firstElement { width: 50px; height: 50px; background: green; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
$("body").click(function() {
|
||||
$("marker").css( $(this).offset() );
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="firstElement"></div>
|
||||
<div id="marker"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>fixed</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
div.fixed { position: fixed; margin: 1px; border: 2px solid #000; padding: 5px; width: 100px; height: 100px; background: #fff; overflow: hidden; }
|
||||
#fixed-1 { top: 0; left: 0; }
|
||||
#fixed-2 { top: 20px; left: 20px; }
|
||||
#forceScroll { width: 5000px; height: 5000px; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
window.scrollTo(1000,1000);
|
||||
$(".fixed").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="fixed-1" class="fixed"></div>
|
||||
<div id="fixed-2" class="fixed"></div>
|
||||
<div id="fixed-no-top-left" class="fixed"></div>
|
||||
<div id="forceScroll"></div>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>relative</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
div.relative { position: relative; top: 0; left: 0; margin: 1px; border: 2px solid #000; padding: 5px; width: 100px; height: 100px; background: #fff; overflow: hidden; }
|
||||
#relative-2 { top: 20px; left: 20px; }
|
||||
#relative-2-1 { margin: auto; width: 50px; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
$(".relative").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
var pos = $(this).position();
|
||||
$(this).css({ position: 'absolute', top: pos.top, left: pos.left });
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="relative-1" class="relative"><div id="relative-1-1" class="relative"><div id="relative-1-1-1" class="relative"></div></div></div>
|
||||
<div id="relative-2" class="relative"><div id="relative-2-1" class="relative"></div></div>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>scroll</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
div.scroll { position: relative; margin: 1px; border: 2px solid #000; padding: 5px; width: 100px; height: 100px; background: #fff; overflow: auto; }
|
||||
#scroll-1 { top: 0; left: 0; }
|
||||
#scroll-1-1 { top: 1px; left: 1px; }
|
||||
#scroll-1-1-1 { top: 1px; left: 1px; }
|
||||
#forceScroll { width: 5000px; height: 5000px; }
|
||||
#hidden { display: none; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
window.scrollTo(1000,1000);
|
||||
$("#scroll-1")[0].scrollLeft = 5;
|
||||
$("#scroll-1")[0].scrollTop = 5;
|
||||
$(".scroll").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="scroll-1" class="scroll">
|
||||
<div id="scroll-1-1" class="scroll">
|
||||
<div id="scroll-1-1-1" class="scroll"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="hidden"></div>
|
||||
<div id="forceScroll"></div>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>static</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
div.static { position: static; top: 0; left: 0; margin: 1px; border: 2px solid #000; padding: 5px; width: 100px; height: 100px; background: #fff; overflow: hidden; }
|
||||
#static-2 { top: 20px; left: 20px; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
$(".static").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
var pos = $(this).position();
|
||||
$(this).css({ position: 'absolute', top: pos.top, left: pos.left });
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="static-1" class="static"><div id="static-1-1" class="static"><div id="static-1-1-1" class="static"></div></div></div>
|
||||
<div id="static-2" class="static"></div>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>table</title>
|
||||
<style type="text/css" media="screen">
|
||||
body { margin: 1px; padding: 5px; }
|
||||
table { border: 2px solid #000; }
|
||||
th, td { border: 1px solid #000; width: 100px; height: 100px; }
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
jQuery(function($) {
|
||||
$("table, th, td").click(function() {
|
||||
$("#marker").css( $(this).offset() );
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="table-1">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<th id="th-1">th-1</th>
|
||||
<th id="th-2">th-2</th>
|
||||
<th id="th-3">th-3</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr valign="top">
|
||||
<td id="td-1">td-1</td>
|
||||
<td id="td-2">td-2</td>
|
||||
<td id="td-3">td-3</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="marker"></div>
|
||||
<p class="instructions">Click the white box to move the marker to it.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<div id="post">
|
||||
<?php
|
||||
foreach( $_POST as $key=>$value )
|
||||
echo "<b id='$key'>$value</b>";
|
||||
?>
|
||||
</div>
|
||||
<div id="get">
|
||||
<?php
|
||||
foreach( $_GET as $key=>$value )
|
||||
echo "<b id='$key'>$value</b>";
|
||||
?>
|
||||
</div>
|
||||
@@ -0,0 +1 @@
|
||||
var delayedMessage = "It worked!";
|
||||
@@ -0,0 +1,25 @@
|
||||
// Simple script loader that uses jQuery.readyWait via jQuery.holdReady()
|
||||
|
||||
//Hold on jQuery!
|
||||
jQuery.holdReady( true );
|
||||
|
||||
var readyRegExp = /^(complete|loaded)$/;
|
||||
|
||||
function assetLoaded( evt ) {
|
||||
var node = evt.currentTarget || evt.srcElement;
|
||||
if ( evt.type === "load" || readyRegExp.test( node.readyState ) ) {
|
||||
jQuery.holdReady( false );
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout( function() {
|
||||
var script = document.createElement( "script" );
|
||||
script.type = "text/javascript";
|
||||
if ( script.addEventListener ) {
|
||||
script.addEventListener( "load", assetLoaded, false );
|
||||
} else {
|
||||
script.attachEvent( "onreadystatechange", assetLoaded );
|
||||
}
|
||||
script.src = "data/readywaitasset.js";
|
||||
document.getElementsByTagName( "head" )[ 0 ].appendChild( script );
|
||||
}, 2000 );
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
if ( $_REQUEST['header'] ) {
|
||||
if ( $_REQUEST['header'] == "ecma" ) {
|
||||
header("Content-type: application/ecmascript");
|
||||
} else {
|
||||
header("Content-type: text/javascript");
|
||||
}
|
||||
}
|
||||
?>
|
||||
ok( true, "Script executed correctly." );
|
||||
@@ -0,0 +1,114 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>jQuery selector - attributes</title>
|
||||
|
||||
<script src="../../jquery.js"></script>
|
||||
|
||||
<script id="script1"
|
||||
defer
|
||||
async></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
document.createElement('video');
|
||||
document.createElement('audio');
|
||||
document.createElement('article');
|
||||
document.createElement('details');
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<img id="img1"
|
||||
ismap>
|
||||
|
||||
<hr id="hr1"
|
||||
noshade>
|
||||
|
||||
<form id="form1"
|
||||
name="formName"
|
||||
novalidate
|
||||
formnovalidate>
|
||||
<input type="text" id="text1"
|
||||
tabindex="1"
|
||||
name="name"
|
||||
required
|
||||
autofocus
|
||||
readonly>
|
||||
<textarea id="textarea1"
|
||||
noresize></textarea>
|
||||
</form>
|
||||
|
||||
<table>
|
||||
<tr><td id="td1"
|
||||
nowrap></td></tr>
|
||||
</table>
|
||||
|
||||
<iframe id="iframe1"
|
||||
src="iframe.html"
|
||||
seamless></iframe>
|
||||
|
||||
<style id="style1"
|
||||
scoped></style>
|
||||
|
||||
<ol id="ol1"
|
||||
reversed></ol>
|
||||
|
||||
<article id="article1"
|
||||
pubdate></article>
|
||||
|
||||
<details id="details1"
|
||||
open></details>
|
||||
|
||||
<div id="div1"
|
||||
nowrap
|
||||
hidden
|
||||
itemscope
|
||||
draggable="true"
|
||||
contenteditable="true"
|
||||
aria-disabled="true">
|
||||
<p>My name is <span id="span1"
|
||||
spellcheck="true"
|
||||
itemprop="name">Elizabeth</span>.</p>
|
||||
</div>
|
||||
|
||||
<audio id="audio1"
|
||||
muted></audio>
|
||||
|
||||
<video id="video1"
|
||||
loop
|
||||
controls
|
||||
autoplay
|
||||
autobuffer></video>
|
||||
|
||||
<map id="map1">
|
||||
<area id="area1"
|
||||
nohref
|
||||
shape="default">
|
||||
</map>
|
||||
|
||||
<input id="check1"
|
||||
type="checkbox"
|
||||
disabled
|
||||
checked>
|
||||
|
||||
<select id="select1"
|
||||
multiple>
|
||||
<option id="option1"
|
||||
selected
|
||||
value="blar">blar</option>
|
||||
</select>
|
||||
|
||||
<dl id="dl"
|
||||
compact>
|
||||
<dt>Term</dt><dd>This is the first definition in compact format.</dd>
|
||||
<dt>Term</dt><dd>This is the second definition in compact format.</dd>
|
||||
</dl>
|
||||
|
||||
<object id="object1"
|
||||
declare></object>
|
||||
|
||||
<marquee id="marquee1"
|
||||
direction="up"
|
||||
truespeed>Scrolling text (non-standard)</marquee>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>jQuery selector - sizzle cache</title>
|
||||
|
||||
<script src="../../jquery.js"></script>
|
||||
<script>
|
||||
document.write(
|
||||
"<script>var $cached = jQuery.noConflict(true);<\x2Fscript>" +
|
||||
"<script src='" + document.getElementById("jquery-js").src + "?overwrite'><\x2Fscript>"
|
||||
);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<a href="#" id="collision">Worlds collide</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header( "HTTP/1.0 $_GET[status] $_GET[text]" );
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style>
|
||||
body {
|
||||
background: #000000;
|
||||
}
|
||||
|
||||
div {
|
||||
padding: 15px;
|
||||
border: 1px solid #999;
|
||||
display: inline;
|
||||
margin:8px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script src="getComputedSupport.js"></script>
|
||||
</div>
|
||||
<script>
|
||||
window.parent.iframeCallback( jQuery( "body" ).css( "backgroundColor" ),
|
||||
getComputedSupport( jQuery.support ) );
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
file_put_contents("csp.log", "", LOCK_EX);
|
||||
?>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
file_put_contents("csp.log", "error", LOCK_EX);
|
||||
?>
|
||||
@@ -0,0 +1,3 @@
|
||||
jQuery( function() {
|
||||
parent.iframeCallback( getComputedSupport( jQuery.support ) );
|
||||
} );
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
# This test page checks CSP only for browsers with "Content-Security-Policy" header support
|
||||
# i.e. no old WebKit or old Firefox
|
||||
header("Content-Security-Policy: default-src 'self'; report-uri csp-log.php");
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>CSP Test Page</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
<script src="csp.js"></script>
|
||||
<script src="getComputedSupport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<p>CSP Test Page</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
function getComputedSupport( support ) {
|
||||
var prop,
|
||||
result = {};
|
||||
|
||||
for ( prop in support ) {
|
||||
if ( typeof support[ prop ] === "function" ) {
|
||||
result[ prop ] = support[ prop ]();
|
||||
} else {
|
||||
result[ prop ] = support[ prop ];
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
html text<br/>
|
||||
<script type="text/javascript">/* <![CDATA[ */
|
||||
testFoo = "foo"; jQuery('#foo').html('foo');
|
||||
ok( true, "test.html executed" );
|
||||
/* ]]> */</script>
|
||||
<script src="data/testbar.php"></script>
|
||||
blabla
|
||||
@@ -0,0 +1,7 @@
|
||||
html text<br/>
|
||||
<script type="text/javascript">/* <![CDATA[ */
|
||||
testFoo = "foo"; jQuery('#foo').html('foo');
|
||||
ok( true, "test.php executed" );
|
||||
/* ]]> */</script>
|
||||
<script src="data/testbar.php?<?php srand(); echo time() . '' . rand(); ?>"></script>
|
||||
blabla
|
||||
@@ -0,0 +1,5 @@
|
||||
<script type="text/javascript">
|
||||
var testFoo = "foo";
|
||||
jQuery('#foo').html('foo');
|
||||
ok( true, "test2.html executed" );
|
||||
</script>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div class="user">This is a user</div>
|
||||
<div class="user">This is a user</div>
|
||||
<div class="teacher">This is a teacher</div>
|
||||
<div id="superuser">This is a superuser</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
this.testBar = "bar";
|
||||
jQuery("#ap").html("bar");
|
||||
ok( true, "testbar.php executed");
|
||||
@@ -0,0 +1,347 @@
|
||||
/*jshint multistr:true, quotmark:false */
|
||||
|
||||
var fireNative, originaljQuery, original$,
|
||||
baseURL = "",
|
||||
supportjQuery = this.jQuery,
|
||||
|
||||
// see RFC 2606
|
||||
externalHost = "example.com";
|
||||
|
||||
this.hasPHP = true;
|
||||
this.isLocal = window.location.protocol === "file:";
|
||||
|
||||
// Setup global variables before loading jQuery for testing .noConflict()
|
||||
supportjQuery.noConflict( true );
|
||||
originaljQuery = this.jQuery = undefined;
|
||||
original$ = this.$ = "replaced";
|
||||
|
||||
/**
|
||||
* Returns an array of elements with the given IDs
|
||||
* @example q( "main", "foo", "bar" )
|
||||
* @result [<div id="main">, <span id="foo">, <input id="bar">]
|
||||
*/
|
||||
this.q = function() {
|
||||
var r = [],
|
||||
i = 0;
|
||||
|
||||
for ( ; i < arguments.length; i++ ) {
|
||||
r.push( document.getElementById( arguments[ i ] ) );
|
||||
}
|
||||
return r;
|
||||
};
|
||||
|
||||
/**
|
||||
* Asserts that a select matches the given IDs
|
||||
* @param {String} a - Assertion name
|
||||
* @param {String} b - Sizzle selector
|
||||
* @param {String} c - Array of ids to construct what is expected
|
||||
* @example t("Check for something", "//[a]", ["foo", "bar"]);
|
||||
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'bar'
|
||||
*/
|
||||
QUnit.assert.t = function( a, b, c ) {
|
||||
var f = jQuery( b ).get(),
|
||||
s = "",
|
||||
i = 0;
|
||||
|
||||
for ( ; i < f.length; i++ ) {
|
||||
s += ( s && "," ) + '"' + f[ i ].id + '"';
|
||||
}
|
||||
|
||||
this.deepEqual( f, q.apply( q, c ), a + " (" + b + ")" );
|
||||
};
|
||||
|
||||
this.createDashboardXML = function() {
|
||||
var string = '<?xml version="1.0" encoding="UTF-8"?> \
|
||||
<dashboard> \
|
||||
<locations class="foo"> \
|
||||
<location for="bar" checked="different"> \
|
||||
<infowindowtab normal="ab" mixedCase="yes"> \
|
||||
<tab title="Location"><![CDATA[blabla]]></tab> \
|
||||
<tab title="Users"><![CDATA[blublu]]></tab> \
|
||||
</infowindowtab> \
|
||||
</location> \
|
||||
</locations> \
|
||||
</dashboard>';
|
||||
|
||||
return jQuery.parseXML( string );
|
||||
};
|
||||
|
||||
this.createWithFriesXML = function() {
|
||||
var string = '<?xml version="1.0" encoding="UTF-8"?> \
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" \
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> \
|
||||
<soap:Body> \
|
||||
<jsconf xmlns="http://{{ externalHost }}/ns1"> \
|
||||
<response xmlns:ab="http://{{ externalHost }}/ns2"> \
|
||||
<meta> \
|
||||
<component id="seite1" class="component"> \
|
||||
<properties xmlns:cd="http://{{ externalHost }}/ns3"> \
|
||||
<property name="prop1"> \
|
||||
<thing /> \
|
||||
<value>1</value> \
|
||||
</property> \
|
||||
<property name="prop2"> \
|
||||
<thing att="something" /> \
|
||||
</property> \
|
||||
<foo_bar>foo</foo_bar> \
|
||||
</properties> \
|
||||
</component> \
|
||||
</meta> \
|
||||
</response> \
|
||||
</jsconf> \
|
||||
</soap:Body> \
|
||||
</soap:Envelope>';
|
||||
|
||||
return jQuery.parseXML( string.replace( /\{\{\s*externalHost\s*\}\}/g, externalHost ) );
|
||||
};
|
||||
|
||||
this.createXMLFragment = function() {
|
||||
var xml, frag;
|
||||
if ( window.ActiveXObject ) {
|
||||
xml = new ActiveXObject( "msxml2.domdocument" );
|
||||
} else {
|
||||
xml = document.implementation.createDocument( "", "", null );
|
||||
}
|
||||
|
||||
if ( xml ) {
|
||||
frag = xml.createElement( "data" );
|
||||
}
|
||||
|
||||
return frag;
|
||||
};
|
||||
|
||||
fireNative = document.createEvent ?
|
||||
function( node, type ) {
|
||||
var event = document.createEvent( "HTMLEvents" );
|
||||
|
||||
event.initEvent( type, true, true );
|
||||
node.dispatchEvent( event );
|
||||
} :
|
||||
function( node, type ) {
|
||||
node.fireEvent( "on" + type, document.createEventObject() );
|
||||
};
|
||||
|
||||
/**
|
||||
* Add random number to url to stop caching
|
||||
*
|
||||
* @example url("data/test.html")
|
||||
* @result "data/test.html?10538358428943"
|
||||
*
|
||||
* @example url("data/test.php?foo=bar")
|
||||
* @result "data/test.php?foo=bar&10538358345554"
|
||||
*/
|
||||
function url( value ) {
|
||||
return baseURL + value + ( /\?/.test( value ) ? "&" : "?" ) +
|
||||
new Date().getTime() + "" + parseInt( Math.random() * 100000, 10 );
|
||||
}
|
||||
|
||||
// Ajax testing helper
|
||||
this.ajaxTest = function( title, expect, options ) {
|
||||
QUnit.test( title, expect, function( assert ) {
|
||||
var requestOptions;
|
||||
|
||||
if ( jQuery.isFunction( options ) ) {
|
||||
options = options( assert );
|
||||
}
|
||||
options = options || [];
|
||||
requestOptions = options.requests || options.request || options;
|
||||
if ( !jQuery.isArray( requestOptions ) ) {
|
||||
requestOptions = [ requestOptions ];
|
||||
}
|
||||
|
||||
var done = assert.async();
|
||||
|
||||
if ( options.setup ) {
|
||||
options.setup();
|
||||
}
|
||||
|
||||
var completed = false,
|
||||
remaining = requestOptions.length,
|
||||
complete = function() {
|
||||
if ( !completed && --remaining === 0 ) {
|
||||
completed = true;
|
||||
delete ajaxTest.abort;
|
||||
if ( options.teardown ) {
|
||||
options.teardown();
|
||||
}
|
||||
|
||||
// Make sure all events will be called before done()
|
||||
setTimeout( done );
|
||||
}
|
||||
},
|
||||
requests = jQuery.map( requestOptions, function( options ) {
|
||||
var request = ( options.create || jQuery.ajax )( options ),
|
||||
callIfDefined = function( deferType, optionType ) {
|
||||
var handler = options[ deferType ] || !!options[ optionType ];
|
||||
return function( _, status ) {
|
||||
if ( !completed ) {
|
||||
if ( !handler ) {
|
||||
assert.ok( false, "unexpected " + status );
|
||||
} else if ( jQuery.isFunction( handler ) ) {
|
||||
handler.apply( this, arguments );
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
if ( options.afterSend ) {
|
||||
options.afterSend( request, assert );
|
||||
}
|
||||
|
||||
return request
|
||||
.done( callIfDefined( "done", "success" ) )
|
||||
.fail( callIfDefined( "fail", "error" ) )
|
||||
.always( complete );
|
||||
} );
|
||||
|
||||
ajaxTest.abort = function( reason ) {
|
||||
if ( !completed ) {
|
||||
completed = true;
|
||||
delete ajaxTest.abort;
|
||||
assert.ok( false, "aborted " + reason );
|
||||
jQuery.each( requests, function( i, request ) {
|
||||
request.abort();
|
||||
} );
|
||||
}
|
||||
};
|
||||
} );
|
||||
};
|
||||
|
||||
this.testIframe = function( fileName, name, fn ) {
|
||||
QUnit.test( name, function( assert ) {
|
||||
var done = assert.async();
|
||||
|
||||
// load fixture in iframe
|
||||
var iframe = loadFixture(),
|
||||
win = iframe.contentWindow,
|
||||
interval = setInterval( function() {
|
||||
if ( win && win.jQuery && win.jQuery.isReady ) {
|
||||
clearInterval( interval );
|
||||
|
||||
// call actual tests passing the correct jQuery instance to use
|
||||
fn.call( this, win.jQuery, win, win.document, assert );
|
||||
done();
|
||||
document.body.removeChild( iframe );
|
||||
iframe = null;
|
||||
}
|
||||
}, 15 );
|
||||
} );
|
||||
|
||||
function loadFixture() {
|
||||
var src = url( "./data/" + fileName + ".html" ),
|
||||
iframe = jQuery( "<iframe />" ).appendTo( "body" )[ 0 ];
|
||||
iframe.style.cssText = "width: 500px; height: 500px; position: absolute; " +
|
||||
"top: -600px; left: -600px; visibility: hidden;";
|
||||
|
||||
iframe.contentWindow.location = src;
|
||||
return iframe;
|
||||
}
|
||||
};
|
||||
|
||||
this.testIframeWithCallback = function( title, fileName, func ) {
|
||||
QUnit.test( title, 1, function( assert ) {
|
||||
var iframe;
|
||||
var done = assert.async();
|
||||
|
||||
window.iframeCallback = function() {
|
||||
var args = Array.prototype.slice.call( arguments );
|
||||
|
||||
args.push( assert );
|
||||
|
||||
setTimeout( function() {
|
||||
this.iframeCallback = undefined;
|
||||
|
||||
func.apply( this, args );
|
||||
func = function() {};
|
||||
iframe.remove();
|
||||
|
||||
done();
|
||||
} );
|
||||
};
|
||||
iframe = jQuery( "<div/>" ).css( { position: "absolute", width: "500px", left: "-600px" } )
|
||||
.append( jQuery( "<iframe/>" ).attr( "src", url( "./data/" + fileName ) ) )
|
||||
.appendTo( "#qunit-fixture" );
|
||||
} );
|
||||
};
|
||||
this.iframeCallback = undefined;
|
||||
|
||||
// Tests are always loaded async
|
||||
QUnit.config.autostart = false;
|
||||
this.loadTests = function() {
|
||||
|
||||
// Leverage QUnit URL parsing to detect testSwarm environment and "basic" testing mode
|
||||
var loadSwarm = ( QUnit.urlParams[ "swarmURL" ] + "" ).indexOf( "http" ) === 0,
|
||||
basicTests = ( QUnit.urlParams[ "module" ] + "" ) === "basic";
|
||||
|
||||
// Get testSubproject from testrunner first
|
||||
require( [ "data/testrunner.js" ], function() {
|
||||
var i = 0,
|
||||
tests = [
|
||||
|
||||
// A special module with basic tests, meant for
|
||||
// not fully supported environments like Android 2.3,
|
||||
// jsdom or PhantomJS. We run it everywhere, though,
|
||||
// to make sure tests are not broken.
|
||||
"unit/basic.js",
|
||||
|
||||
"unit/core.js",
|
||||
"unit/callbacks.js",
|
||||
"unit/deferred.js",
|
||||
"unit/deprecated.js",
|
||||
"unit/support.js",
|
||||
"unit/data.js",
|
||||
"unit/queue.js",
|
||||
"unit/attributes.js",
|
||||
"unit/event.js",
|
||||
"unit/selector.js",
|
||||
"unit/traversing.js",
|
||||
"unit/manipulation.js",
|
||||
"unit/wrap.js",
|
||||
"unit/css.js",
|
||||
"unit/serialize.js",
|
||||
"unit/ajax.js",
|
||||
"unit/effects.js",
|
||||
"unit/offset.js",
|
||||
"unit/dimensions.js"
|
||||
];
|
||||
|
||||
// Ensure load order (to preserve test numbers)
|
||||
( function loadDep() {
|
||||
var dep = tests[ i++ ];
|
||||
|
||||
if ( dep ) {
|
||||
if ( !basicTests || i === 1 ) {
|
||||
require( [ dep ], loadDep );
|
||||
|
||||
// Support: Android 2.3 only
|
||||
// When running basic tests, replace other modules with dummies to avoid overloading
|
||||
// impaired clients.
|
||||
} else {
|
||||
QUnit.module( dep.replace( /^.*\/|\.js$/g, "" ) );
|
||||
loadDep();
|
||||
}
|
||||
|
||||
} else {
|
||||
QUnit.load();
|
||||
|
||||
/**
|
||||
* Run in noConflict mode
|
||||
*/
|
||||
if ( jQuery.noConflict ) {
|
||||
jQuery.noConflict();
|
||||
}
|
||||
|
||||
// Load the TestSwarm listener if swarmURL is in the address.
|
||||
if ( loadSwarm ) {
|
||||
require( [ "http://swarm.jquery.org/js/inject.js?" + ( new Date() ).getTime() ],
|
||||
function() {
|
||||
QUnit.start();
|
||||
} );
|
||||
} else {
|
||||
QUnit.start();
|
||||
}
|
||||
}
|
||||
} )();
|
||||
} );
|
||||
};
|
||||
@@ -0,0 +1,203 @@
|
||||
( function() {
|
||||
|
||||
// Store the old counts so that we only assert on tests that have actually leaked,
|
||||
// instead of asserting every time a test has leaked sometime in the past
|
||||
var oldCacheLength = 0,
|
||||
oldActive = 0,
|
||||
|
||||
expectedDataKeys = {},
|
||||
splice = [].splice,
|
||||
ajaxSettings = jQuery.ajaxSettings;
|
||||
|
||||
/**
|
||||
* QUnit configuration
|
||||
*/
|
||||
|
||||
// Max time for stop() and asyncTest() until it aborts test
|
||||
// and start()'s the next test.
|
||||
QUnit.config.testTimeout = 12e4; // 2 minutes
|
||||
|
||||
// Enforce an "expect" argument or expect() call in all test bodies.
|
||||
QUnit.config.requireExpects = true;
|
||||
|
||||
/**
|
||||
* @param {jQuery|HTMLElement|Object|Array} elems Target (or array of targets) for jQuery.data.
|
||||
* @param {string} key
|
||||
*/
|
||||
QUnit.assert.expectJqData = function( env, elems, key ) {
|
||||
var i, elem, expando;
|
||||
|
||||
// As of jQuery 2.0, there will be no "cache"-data is
|
||||
// stored and managed completely below the API surface
|
||||
if ( jQuery.cache ) {
|
||||
env.checkJqData = true;
|
||||
|
||||
if ( elems.jquery && elems.toArray ) {
|
||||
elems = elems.toArray();
|
||||
}
|
||||
if ( !supportjQuery.isArray( elems ) ) {
|
||||
elems = [ elems ];
|
||||
}
|
||||
|
||||
for ( i = 0; i < elems.length; i++ ) {
|
||||
elem = elems[ i ];
|
||||
|
||||
// jQuery.data only stores data for nodes in jQuery.cache,
|
||||
// for other data targets the data is stored in the object itself,
|
||||
// in that case we can't test that target for memory leaks.
|
||||
// But we don't have to since in that case the data will/must will
|
||||
// be available as long as the object is not garbage collected by
|
||||
// the js engine, and when it is, the data will be removed with it.
|
||||
if ( !elem.nodeType ) {
|
||||
|
||||
// Fixes false positives for dataTests(window), dataTests({}).
|
||||
continue;
|
||||
}
|
||||
|
||||
expando = elem[ jQuery.expando ];
|
||||
|
||||
if ( expando === undefined ) {
|
||||
|
||||
// In this case the element exists fine, but
|
||||
// jQuery.data (or internal data) was never (in)directly
|
||||
// called.
|
||||
// Since this method was called it means some data was
|
||||
// expected to be found, but since there is nothing, fail early
|
||||
// (instead of in teardown).
|
||||
this.notStrictEqual(
|
||||
expando,
|
||||
undefined,
|
||||
"Target for expectJqData must have an expando, " +
|
||||
"for else there can be no data to expect."
|
||||
);
|
||||
} else {
|
||||
if ( expectedDataKeys[ expando ] ) {
|
||||
expectedDataKeys[ expando ].push( key );
|
||||
} else {
|
||||
expectedDataKeys[ expando ] = [ key ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
QUnit.config.urlConfig.push( {
|
||||
id: "jqdata",
|
||||
label: "Always check jQuery.data",
|
||||
tooltip: "Trigger QUnit.expectJqData detection for all tests " +
|
||||
"instead of just the ones that call it"
|
||||
} );
|
||||
|
||||
/**
|
||||
* Ensures that tests have cleaned up properly after themselves. Should be passed as the
|
||||
* teardown function on all modules' lifecycle object.
|
||||
*/
|
||||
window.moduleTeardown = function( assert ) {
|
||||
var i, expectedKeys, actualKeys,
|
||||
cacheLength = 0;
|
||||
|
||||
// Only look for jQuery data problems if this test actually
|
||||
// provided some information to compare against.
|
||||
if ( QUnit.urlParams.jqdata || this.checkJqData ) {
|
||||
for ( i in jQuery.cache ) {
|
||||
expectedKeys = expectedDataKeys[ i ];
|
||||
actualKeys = jQuery.cache[ i ] ? Object.keys( jQuery.cache[ i ] ) : jQuery.cache[ i ];
|
||||
if ( !QUnit.equiv( expectedKeys, actualKeys ) ) {
|
||||
assert.deepEqual( actualKeys, expectedKeys, "Expected keys exist in jQuery.cache" );
|
||||
}
|
||||
delete jQuery.cache[ i ];
|
||||
delete expectedDataKeys[ i ];
|
||||
}
|
||||
|
||||
// In case it was removed from cache before (or never there in the first place)
|
||||
for ( i in expectedDataKeys ) {
|
||||
assert.deepEqual(
|
||||
expectedDataKeys[ i ],
|
||||
undefined,
|
||||
"No unexpected keys were left in jQuery.cache (#" + i + ")"
|
||||
);
|
||||
delete expectedDataKeys[ i ];
|
||||
}
|
||||
}
|
||||
|
||||
// Reset data register
|
||||
expectedDataKeys = {};
|
||||
|
||||
// Check for (and clean up, if possible) incomplete animations/requests/etc.
|
||||
if ( jQuery.timers && jQuery.timers.length !== 0 ) {
|
||||
assert.equal( jQuery.timers.length, 0, "No timers are still running" );
|
||||
splice.call( jQuery.timers, 0, jQuery.timers.length );
|
||||
jQuery.fx.stop();
|
||||
}
|
||||
if ( jQuery.active !== undefined && jQuery.active !== oldActive ) {
|
||||
assert.equal( jQuery.active, oldActive, "No AJAX requests are still active" );
|
||||
if ( ajaxTest.abort ) {
|
||||
ajaxTest.abort( "active requests" );
|
||||
}
|
||||
oldActive = jQuery.active;
|
||||
}
|
||||
|
||||
Globals.cleanup();
|
||||
|
||||
for ( i in jQuery.cache ) {
|
||||
++cacheLength;
|
||||
}
|
||||
|
||||
// Because QUnit doesn't have a mechanism for retrieving
|
||||
// the number of expected assertions for a test,
|
||||
// if we unconditionally assert any of these,
|
||||
// the test will fail with too many assertions :|
|
||||
if ( cacheLength !== oldCacheLength ) {
|
||||
assert.equal( cacheLength, oldCacheLength, "No unit tests leak memory in jQuery.cache" );
|
||||
oldCacheLength = cacheLength;
|
||||
}
|
||||
};
|
||||
|
||||
QUnit.done( function() {
|
||||
|
||||
// Remove our own fixtures outside #qunit-fixture
|
||||
supportjQuery( "#qunit ~ *" ).remove();
|
||||
} );
|
||||
|
||||
QUnit.testDone( function() {
|
||||
|
||||
// Ensure jQuery events and data on the fixture are properly removed
|
||||
jQuery( "#qunit-fixture" ).empty();
|
||||
|
||||
// ...even if the jQuery under test has a broken .empty()
|
||||
supportjQuery( "#qunit-fixture" ).empty();
|
||||
|
||||
// Reset internal jQuery state
|
||||
jQuery.event.global = {};
|
||||
if ( ajaxSettings ) {
|
||||
jQuery.ajaxSettings = jQuery.extend( true, {}, ajaxSettings );
|
||||
} else {
|
||||
delete jQuery.ajaxSettings;
|
||||
}
|
||||
|
||||
// Cleanup globals
|
||||
Globals.cleanup();
|
||||
} );
|
||||
|
||||
// Register globals for cleanup and the cleanup code itself
|
||||
window.Globals = ( function() {
|
||||
var globals = {};
|
||||
|
||||
return {
|
||||
register: function( name ) {
|
||||
window[ name ] = globals[ name ] = true;
|
||||
},
|
||||
|
||||
cleanup: function() {
|
||||
var name;
|
||||
|
||||
for ( name in globals ) {
|
||||
delete window[ name ];
|
||||
}
|
||||
|
||||
globals = {};
|
||||
}
|
||||
};
|
||||
} )();
|
||||
|
||||
} )();
|
||||
@@ -0,0 +1,144 @@
|
||||
ol#empty {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
div#fx-tests h4 {
|
||||
background: red;
|
||||
}
|
||||
|
||||
div#fx-tests h4.pass {
|
||||
background: green;
|
||||
}
|
||||
|
||||
div#fx-tests div.box {
|
||||
background: red;
|
||||
overflow: hidden;
|
||||
border: 2px solid #000;
|
||||
}
|
||||
|
||||
div#fx-tests div.overflow {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
div.inline {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.autoheight {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
div.autowidth {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
div.autoopacity {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.largewidth {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
div.largeheight {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
div.medwidth {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
div.medheight {
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
div.medopacity {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
div.nowidth {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
div.noheight {
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
div.noopacity {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
div.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#fx-tests div.widewidth {
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
div#fx-tests div.wideheight {
|
||||
background-repeat: repeat-y;
|
||||
}
|
||||
|
||||
div#fx-tests div.widewidth.wideheight {
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
div#fx-tests div.noback {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.chain-test,
|
||||
.chain-test div {
|
||||
width: 100px;
|
||||
height: 20px;
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
.chain-test div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.chain-test {
|
||||
background: red;
|
||||
}
|
||||
.chain-test div {
|
||||
background: green;
|
||||
}
|
||||
|
||||
.chain-test-out {
|
||||
background: green;
|
||||
}
|
||||
.chain-test-out div {
|
||||
background: red;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* tests to ensure jQuery can determine the native display mode of elements
|
||||
that have been set as display: none in stylesheets */
|
||||
div#show-tests * { display: none; }
|
||||
|
||||
#nothiddendiv { font-size: 16px; }
|
||||
#nothiddendivchild.em { font-size: 2em; }
|
||||
#nothiddendivchild.prct { font-size: 150%; }
|
||||
|
||||
/* 8099 changes to default styles are read correctly */
|
||||
tt { display: none; }
|
||||
sup { display: none; }
|
||||
dfn { display: none; }
|
||||
|
||||
/* #9239 Attach a background to the body( avoid crashes in removing the test element in support ) */
|
||||
body, div { background: url(http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif) no-repeat -1000px 0; }
|
||||
|
||||
/* #10501 */
|
||||
section { background:#f0f; display:block; }
|
||||
|
||||
/* #11971 */
|
||||
#foo { background: url(1x1.jpg) right bottom no-repeat; }
|
||||
|
||||
/* #14824 */
|
||||
#span-14824 { display: block; }
|
||||
|
||||
#display { display: list-item !important; }
|
||||
@@ -0,0 +1,12 @@
|
||||
Lorem ipsum dolor sit amet
|
||||
consectetuer adipiscing elit
|
||||
Sed lorem leo
|
||||
lorem leo consectetuer adipiscing elit
|
||||
Sed lorem leo
|
||||
rhoncus sit amet
|
||||
elementum at
|
||||
bibendum at, eros
|
||||
Cras at mi et tortor egestas vestibulum
|
||||
sed Cras at mi vestibulum
|
||||
Phasellus sed felis sit amet
|
||||
orci dapibus semper.
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<soap:Body>
|
||||
<jsconf xmlns="http://example.com/ns1">
|
||||
<response xmlns:ab="http://example.com/ns2">
|
||||
<meta>
|
||||
<component id="seite1" class="component">
|
||||
<properties xmlns:cd="http://example.com/ns3">
|
||||
<property name="prop1">
|
||||
<thing />
|
||||
<value>1</value>
|
||||
</property>
|
||||
<property name="prop2">
|
||||
<thing att="something" />
|
||||
</property>
|
||||
<foo_bar>foo</foo_bar>
|
||||
</properties>
|
||||
</component>
|
||||
</meta>
|
||||
</response>
|
||||
</jsconf>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
$callback = $_REQUEST['callback'];
|
||||
$json = $_REQUEST['json'];
|
||||
$text = json_encode(file_get_contents(dirname(__FILE__)."/with_fries.xml"));
|
||||
echo "$callback($text)";
|
||||
?>
|
||||
Reference in New Issue
Block a user