- スキャンID:
- a3071083-59c9-40fd-bb5d-0bc233fe1cf4終了
- 送信済みURL:
- https://mms.textplus.me/t/sms/m/6b63a663-c14d-11ef-aea7-7d69c6a50e49.jpegリダイレクト済み
- レポート終了日:
リンク · 1件検出
ページから特定された発信リンク
リンク | テキスト |
---|---|
https://textplus.com/i/ | ©2017 textPlus, Inc. |
JavaScript変数 · 34件検出
ページのウィンドウオブジェクトにロードされたグローバルのJavaScript変数は関数以外の場所で宣言された変数で、現在のスコープ内であればコードのどこからでもアクセス可能です
名前 | 規模 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
$ | function |
jQuery | function |
Base64Binary | object |
checkOnStart | function |
getImgSrcFromApi | function |
setImgSrc | function |
bytesUploaded | number |
コンソールログメッセージ · 2件検出
Webコンソールにログ記録されたメッセージ
規模 | 分類 | ログ |
---|---|---|
warning | network |
|
warning | network |
|
HTML
未加工のHTMLページ本文
<!DOCTYPE html><html><head>
<title>textPlus Photo Viewer</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link href="//fonts.googleapis.com/css?family=Roboto:400,100,300,500,700" rel="stylesheet" type="text/css">
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<link rel="shortcut icon" href="https://images.squarespace-cdn.com/content/v1/58d2c51e37c581b06216c9e5/1490304851283-OFY0TYMBRTN5S7J9WTBD/favicon.ico?format=100w">
<link rel="stylesheet" href="//d31b754w7srz76.cloudfront.net/2017/css/main.css">
<link rel="stylesheet" media="screen" href="//d31b754w7srz76.cloudfront.net/2017/css/sms_media_reply.css" type="text/css">
<style type="text/css">
.orange-bg{
background-color: #EE7624;
color: #fff;
border: 1px solid #EE7624;
max-width: 350px;
}
.orange-bg:hover {
background-color: #fff;
color: #EE7624;
border: 1px solid #EE7624;
}
.green-bg{
background-color: #B3FF99;
color: #fff;
border: 1px solid #B3FF99;
max-width: 350px;
}
.green-bg:hover {
background-color: #fff;
color: #B3FF99;
border: 1px solid #B3FF99;
}
.oops {
font-family: Roboto, Arial, Helvetica, sans-serif;
font-size: 40px;
font-style: bold;
}
</style>
<meta name="viewport" content="width = device-width, initial-scale = 1.0, maximum-scale = 1.0, minimum-scale = 1.0, user-scalable = no">
<script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"></script><script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
/*-----------------------------BEGIN BASE64 LIBRARY--------------------------*/
var Base64Binary = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
decodeArrayBuffer: function (input) {
var bytes = (input.length / 4) * 3;
var ab = new ArrayBuffer(bytes);
this.decode(input, ab);
return ab;
},
decode: function (input, arrayBuffer) {
//get last chars to see if are valid
var lkey1 = this._keyStr.indexOf(input.charAt(input.length - 1));
var lkey2 = this._keyStr.indexOf(input.charAt(input.length - 2));
var bytes = (input.length / 4) * 3;
if (lkey1 == 64) bytes--; //padding chars, so skip
if (lkey2 == 64) bytes--; //padding chars, so skip
var uarray;
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
var j = 0;
if (arrayBuffer)
uarray = new Uint8Array(arrayBuffer);
else
uarray = new Uint8Array(bytes);
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
for (i = 0; i < bytes; i += 3) {
//get the 3 octects in 4 ascii chars
enc1 = this._keyStr.indexOf(input.charAt(j++));
enc2 = this._keyStr.indexOf(input.charAt(j++));
enc3 = this._keyStr.indexOf(input.charAt(j++));
enc4 = this._keyStr.indexOf(input.charAt(j++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
uarray[i] = chr1;
if (enc3 != 64) uarray[i + 1] = chr2;
if (enc4 != 64) uarray[i + 2] = chr3;
}
return uarray;
}
}
/*-------------------------END BASE64 LIBRARY--------------------------*/
</script> <script type="text/javascript">
function checkOnStart() {
var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
elem = document.getElementById('theContent')
if (mobile) {
setTimeout(function () {
elem.style.visibility = "visible";
}, 300
);
} else {
elem.style.visibility = "visible";
}
}
/*----------------BEGIN DISPLAY LOGIC FOR RECEIVED ASSET------------------*/
// fetches original image for display
function getImgSrcFromApi() {
var xmlhttp;
var redirectUrl;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
redirectUrl = xmlhttp.responseText;
setImgSrc(redirectUrl);
}
}
xmlhttp.open("GET", "https://md.app.nextplus.me/displayAsset?assetId=" + "6b63a663-c14d-11ef-aea7-7d69c6a50e49", true);
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xmlhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
xmlhttp.send();
}
// sets original image src to file decrypted by server
function setImgSrc(redirectUrl) {
var smsPicture;
smsPicture = new Image(100, 100);
smsPicture.src = "data:image/png;base64," + redirectUrl;
document.getElementById("smspicture").src = smsPicture.src;
}
/*----------------END DISPLAY LOGIC FOR RECEIVED ASSET------------------*/
/*----------------BEGIN PREVIEW AND UPLOAD LOGIC FOR REPLY ASSET------------------*/
var bytesUploaded = 0;
var bytesTotal = 0;
var prevBytesLoaded = 0;
var maxFileSize = 1048576 * 5; // 1MB * 5 = 5MB
var resultFileSize = '';
//var maxWidth = '1024';
//var MAX_HEIGHT = '1024';
var uploadInProgress = 0;
function bytesToSize(bytes) {
var sizes = ['Bytes', 'KB', 'MB'];
if (bytes == 0) return 'n/a';
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
}
function fileSelected() {
// hide all warnings initially
document.getElementById('upload_response').style.display = 'none';
document.getElementById('error').style.display = 'none';
// get file intended to be sent as reply
var oFile = document.getElementById('mediaFile').files[0];
if (typeof oFile === 'undefined') {
document.getElementById('error').style.display = 'block';
return;
}
// get a preview of the image file
var imgPreview = document.getElementById('preview');
var oReader = new FileReader();
oReader.onload = function (e) {
imgPreview.src = e.target.result;
imgPreview.onload = function () {
resultFileSize = bytesToSize(oFile.size);
};
};
oReader.readAsDataURL(oFile);
}
function startUploading() {
// prevent the user from jamming the submit button and causing multiple uploads
if (uploadInProgress == 1) {
var imgPreview = document.getElementById('preview');
imgPreview.src = "";
var uploadResponse = document.getElementById('upload_response');
uploadResponse.innerHTML = '<div class="oops">Ooops!!</div><h3>Geez! Can you wait?<br/>Your image is still sending.</h3>';
uploadResponse.style.display = 'block';
return;
}
uploadInProgress = 1;
prevBytesLoaded = 0;
document.getElementById('upload_response').style.display = 'none';
document.getElementById('error').style.display = 'none';
// get the file submitted by the user
var oFile = document.getElementById('mediaFile').files[0];
// make sure file is not null / undefined
if (typeof oFile === 'undefined') {
uploadInProgress = 0;
var imgPreview = document.getElementById('preview');
imgPreview.src = "";
var uploadResponse = document.getElementById('upload_response');
uploadResponse.innerHTML = '<div class="oops">Ooops!!</div><h3>I think you forgot the image.</h3><br/><A HREF="#" onclick="getFile();toggle_send();toggle_response();toggle_change();" id="tryBtn" class="button green-bg" >Try Again</A>';
uploadResponse.style.display = 'block';
return;
}
// make sure file is an image
var rFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i;
if (!rFilter.test(oFile.type)) {
uploadInProgress = 0;
var imgPreview = document.getElementById('preview');
imgPreview.src = "";
var uploadResponse = document.getElementById('upload_response');
uploadResponse.innerHTML = '<div class="oops">Ooops!!</div><h3>Say What? Try sending an image instead.</h3><br/><A HREF="#" onclick="getFile();toggle_send();toggle_response();toggle_change();" class="button green-bg" id="tryBtn">Try Again</A>';
uploadResponse.style.display = 'block';
return;
}
// make sure file is not too big
if (oFile.size > maxFileSize) {
uploadInProgress = 0;
var imgPreview = document.getElementById('preview');
imgPreview.src = "";
var uploadResponse = document.getElementById('upload_response');
uploadResponse.innerHTML = '<div class="oops">Ooops!!</div><h3>Whoa! That thing is huge.</h3><br/><A HREF="javascript:history.go(0)" id="tryBtn">Try Again</A>';
uploadResponse.style.display = 'block';
return;
}
// make an object for the file preview
var imgPreview = document.getElementById('preview');
var oReader = new FileReader();
oReader.onload = function (e) {
imgPreview.src = e.target.result;
imgPreview.onload = function () {
resultFileSize = bytesToSize(oFile.size);
};
};
// base64 encode the media file
oReader.readAsDataURL(oFile);
// get form data for POSTing
//var formData = document.getElementById('upload_form').getFormData(); // for FF3
var formData = new FormData(document.getElementById('upload_form'));
formData.append("assetId", "6b63a663-c14d-11ef-aea7-7d69c6a50e49");
var xmlReq = new XMLHttpRequest();
xmlReq.upload.addEventListener('progress', uploadProgress, false);
xmlReq.addEventListener('load', uploadFinish, false);
xmlReq.addEventListener('error', uploadError, false);
xmlReq.open('POST', '/uploadAndSendAsset');
xmlReq.send(formData);
}
function uploadProgress(e) {
if (e.lengthComputable) {
bytesUploaded = e.loaded;
bytesTotal = e.total;
var percentComplete = Math.round(e.loaded * 100 / e.total);
document.getElementById('progress').style.width = (percentComplete * 4).toString() + 'px';
var uploadResponse = document.getElementById('upload_response');
uploadResponse.innerHTML = '<h3>Sending picture...</h3>';
uploadResponse.style.display = 'block';
}
}
function uploadFinish(e) {
var uploadResponse = document.getElementById('upload_response');
var imgPreview = document.getElementById('preview');
// if the server responds 401 unauthorized
if (e.target.status == '401') {
uploadResponse.innerHTML = "<div class='oops'>Ooops!!</div><h3>You can only send " + e.target.responseText + " replies to an image!" +
"<br />If you'd like to send more, ask your friend to send you a new picture or animated GIF!</h3>";
imgPreview.src = "";
// if the server responds everything is ok
} else if (e.target.status == '200') {
uploadResponse.innerHTML = '<div class="oops">Congrats!!</div><h3>Your image has been sent!</h3><br/><A HREF="#" onclick="getFile();" id="sendBtn">Send Another?</A>';
imgPreview.src = "";
// if the server responds with some other issue not covered above and not caught by the client
} else {
uploadResponse.innerHTML = '<div class="oops">Ooops!!</div><h3>Uh oh! Something has gone wrong!</h3>';
imgPreview.src = "";
}
uploadResponse.style.display = 'block';
uploadInProgress = 0;
}
function uploadError(e) {
document.getElementById('error').style.display = 'block';
}
/*----------------END PREVIEW AND UPLOAD LOGIC FOR REPLY ASSET------------------*/
</script>
<script type="text/javascript">
function getFile() {
document.getElementById("mediaFile").click();
}
function toggle_visibility(id) {
var e = document.getElementById(id);
if (e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
function force_visibility(id, visibility) {
var e = document.getElementById(id);
e.style.display = visibility ? 'block' : 'none';
}
function toggle_send() {
var es = document.getElementById('replybtngroup');
if (es.style.display == 'block')
es.style.display = 'none';
else
es.style.display = 'block';
}
function toggle_change() {
var es = document.getElementById('changeBtn');
if (es.style.display == 'block')
es.style.display = 'none';
else
es.style.display = 'block';
}
function toggle_response() {
var es = document.getElementById('upload_response');
if (es.style.display == 'block')
es.style.display = 'none';
else
es.style.display = 'block';
}
var img = new Image();
img.onload = function () {
i = document.getElementById('smspicture');
i.removeAttribute('class');
};
</script>
</head>
<body onload="checkOnStart(); getImgSrcFromApi(); force_visibility('replyBtn', false);" style="zoom: 1;">
<div id="theContent" style="visibility: visible; padding: 0px; margin: 0px;">
<section id="middle" style="padding: 0px; margin: 0px;">
<section>
<div id="originalPhoto" style="display: block;">
<center>
<span style="font-family:Roboto, Arial, Helvetica, sans-serif;font-weight: 400; padding: 15px; display: block; color: #555;">A textPlus user sent this</span>
</center>
<img id="smspicture" style="display: block;" class="imgloading">
<br>
<center>
<a href="https://textplus.com/i/" class="button orange-bg" id="getapp" data-atr="getapp" onclick="_gaq.push(['_trackEvent', 'Photo View', 'GetAppReplyTapped']);">REPLY USING TEXTPLUS</a>
<a href="#" class="button gray-bg" id="replyBtn" onclick="toggle_visibility('userEmailReply');toggle_visibility('originalPhoto');
toggle_visibility('GetAppWebReply');getFile();_gaq.push(['_trackEvent', 'Photo View', 'WebReplyTapped']);
return false;" style="display: none;">WEB REPLY</a>
</center>
</div>
</section>
<!-- Down below is pop-under which shown up when WEB-REPLY clicked -->
<div id="userEmailReply" style="display: none;">
<ul>
<center>
<form id="upload_form" enctype="multipart/form-data" method="post" style="padding:0px;margin:0px;">
<br>
<div id="selectBtn" onclick="getFile();toggle_visibility('selectBtn');toggle_visibility('changeBtn');toggle_visibility('sendBtn')">
Select a Photo
</div>
<div style="height: 0px;width: 0px; overflow:hidden;">
<input type="file" accept="image/*;capture=camera" name="mediaFile" id="mediaFile" onchange="fileSelected();">
</div>
<br>
<div id="error" style="font-weight: 400;padding:0px;margin:0px;"></div>
<div id="fileinfo" style="padding:0px;margin:0px;">
<div id="filename" style="padding:0px;margin:0px;"></div>
<div id="filesize" style="padding:0px;margin:0px;"></div>
<div id="filetype" style="padding:0px;margin:0px;"></div>
<div id="filedim" style="padding:0px;margin:0px;"></div>
</div>
<div id="progress_info" style="padding:0px;margin:0px;">
<div id="progress" style="padding:0px;margin:0px;"></div>
<div class="clear_both" style="padding:0px;margin:0px;"></div>
<div>
<div class="clear_both" style="padding:0px;margin:0px;"></div>
</div>
</div>
<div id="GetAppWebReply" style="display: none;">
<a href="https://textplus.com/i/" class="button orange-bg" id="getapp2" data-atr="getapp" onclick="_gaq.push(['_trackEvent', 'Photo View', 'GetAppWebReplyTapped']);">
GET textPlus
</a>
</div>
<img id="numnut" style="padding:0px;margin:0px;">
<img id="preview" style="padding:0px;margin:0px;display:block;" class="imgloading">
<div id="upload_response" style="padding:0px;margin:0px;"></div>
<center>
<div id="replybtngroup" style="display: block">
<a href="#" class="button green-bg change-bg" id="changeBtn" onclick="getFile();_gaq.push(['_trackEvent', 'Photo View', 'ChangePhotoTapped']);" style="display:block;">BACK</a>
<a href="#" class="button green-bg send-bg" onclick="startUploading(); _gaq.push(['_trackEvent', 'Photo View', 'UploadPhoto']);toggle_visibility('replybtngroup');toggle_visibility('changeBtn');" id="sendBtn" style="display:block;">SEND</a>
</div>
</center>
</form>
</center>
</ul>
</div>
</section>
<center>
<div id="bottomsection" style="background-color: #fff; padding-top: 10px;">
<center>
<span style="font-weight: 300; padding: 15px; display: block; color: #666;">
textPlus. Message <i>anyone</i> for free. Works better than your regular phone!
</span>
</center>
</div>
</center>
<footer id="footer" style="background-color:green; padding-top:15px;">
<a href="https://textplus.com/i/">
<span style="font-weight: lighter; font-size: 0.7em;margin-left:50px;">
<img src="https://d31b754w7srz76.cloudfront.net/2017/img/tplus-white.png" width="200">
<br>©2017 textPlus, Inc.
</span>
</a>
</footer></div>
<!-- --------------BEGIN GOOGLE ANALYTICS-------------- -->
<!-- --------------BEGIN GOOGLE ANALYTICS-------------- -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script><script src="https://ssl.google-analytics.com/ga.js" type="text/javascript"></script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("${googleAnalyticsId}");
pageTracker._trackPageview();
} catch (err) {
}</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '${googleAnalyticsId}']);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- ----------------END GOOGLE ANALYTICS---------------- -->
</body></html>