Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHOBUYWAP
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
毕凯
8 years ago
Commit
78177ca4c0d4eb8fa77e4a136fb8be79601fdd40
1 parent
e8b6f8bc
yas 2.4.0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
2 additions
and
0 deletions
static/dist/yas-jssdk/2.4.0/yas.js
static/dist/yas-jssdk/2.4.0/yas.js
0 → 100644
View file @
78177ca
!
function
(
e
){
function
t
(
o
){
if
(
n
[
o
])
return
n
[
o
].
exports
;
var
r
=
n
[
o
]
=
{
exports
:{},
id
:
o
,
loaded
:
!
1
};
return
e
[
o
].
call
(
r
.
exports
,
r
,
r
.
exports
,
t
),
r
.
loaded
=!
0
,
r
.
exports
}
var
n
=
{};
return
t
.
m
=
e
,
t
.
c
=
n
,
t
.
p
=
""
,
t
(
0
)}([
function
(
e
,
t
,
n
){
var
o
=
n
(
12
);
if
(
window
.
YohoAcquisitionObject
){
var
r
=
window
.
YohoAcquisitionObject
;
window
[
r
].
p
&&
(
o
.
apply
(
this
,
window
[
r
].
p
),
window
[
r
]
=
o
)}
e
.
exports
=
o
},
function
(
e
,
t
){
t
.
flashChecker
=
function
(){
var
e
=
0
,
t
=
0
,
n
=
0
,
o
=
null
;
return
n
?(
o
=
new
ActiveXObject
(
"ShockwaveFlash.ShockwaveFlash"
),
o
&&
(
e
=
1
,
t
=
o
.
GetVariable
(
"$version"
))):
navigator
.
plugins
&&
navigator
.
plugins
.
length
>
0
&&
(
o
=
navigator
.
plugins
[
"Shockwave Flash"
],
o
&&
(
e
=
1
,
t
=
o
.
description
.
replace
(
"Shockwave Flash"
,
""
))),{
f
:
e
,
v
:
t
}},
t
.
Hash
=
function
(
e
){
var
t
,
n
=
1
,
o
=
0
;
if
(
e
)
for
(
n
=
0
,
t
=
e
.
length
-
1
;
t
>=
0
;
t
--
)
o
=
e
.
charCodeAt
(
t
),
n
=
(
n
<<
6
&
268435455
)
+
o
+
(
o
<<
14
),
o
=
266338304
&
n
,
0
!==
o
&&
(
n
^=
o
>>
21
);
return
n
},
t
.
Random
=
function
(){
return
Math
.
round
(
2147483647
*
Math
.
random
())},
t
.
hashClientInfo
=
function
(){
var
e
=
window
.
navigator
,
n
=
window
.
history
.
length
,
o
=
[
e
.
appName
,
e
.
version
,
e
.
language
,
e
.
platform
,
e
.
userAgent
,
e
.
javaEnabled
(),
window
.
screen
,
window
.
screen
.
colorDepth
,
window
.
document
.
cookie
?
window
.
document
.
cookie
:
""
,
window
.
document
.
referrer
?
window
.
document
.
referrer
:
""
];
e
=
o
.
join
(
""
);
for
(
var
r
=
e
.
length
;
n
>
0
;)
e
+=
n
--^
r
++
;
return
t
.
Hash
(
e
)},
t
.
merge
=
function
(
e
,
t
){
var
n
=
{};
for
(
var
o
in
e
)
n
[
o
]
=
e
[
o
];
for
(
var
r
in
t
)
n
[
r
]
=
t
[
r
];
return
n
},
t
.
genParam
=
function
(
e
){
var
t
=
[];
for
(
var
n
in
e
)
t
.
push
(
n
+
"="
+
e
[
n
]);
return
t
.
join
(
"&"
)},
t
.
trim
=
function
(
e
){
if
(
String
.
prototype
.
trim
)
return
null
===
e
?
""
:
String
.
prototype
.
trim
.
call
(
e
);
var
t
=
/^
\s
+/
,
n
=
/
\s
+$/
,
o
=
""
;
return
e
?(
o
=
e
.
toString
().
replace
(
t
,
""
),
o
=
o
.
replace
(
n
,
""
)):
void
0
},
t
.
getGeo
=
function
(
e
){
function
t
(
t
){
var
n
=
t
.
coords
.
longitude
,
o
=
t
.
coords
.
latitude
;
e
(
o
,
n
)}
function
n
(
t
){
e
(
!
1
)}
if
(
window
.
navigator
.
geolocation
){
var
o
=
{
enableHighAccuracy
:
!
0
};
window
.
navigator
.
geolocation
.
getCurrentPosition
(
t
,
n
,
o
)}
else
e
(
!
1
)},
t
.
queryString
=
function
(){
var
e
,
t
,
n
=
{},
o
=
window
.
location
.
search
.
slice
(
1
).
split
(
"&"
);
for
(
t
=
0
;
t
<
o
.
length
;
t
++
)
e
=
o
[
t
].
split
(
"="
),
n
[
e
[
0
]]
=
e
[
1
];
return
n
},
t
.
closest
=
function
(
e
,
t
){
for
(
var
n
=
e
.
matches
||
e
.
webkitMatchesSelector
||
e
.
mozMatchesSelector
||
e
.
msMatchesSelector
;
e
&&!
n
.
call
(
e
,
t
);)
e
=
e
.
parentElement
;
return
e
},
t
.
getChannel
=
function
(){
function
e
(
e
){
var
t
,
n
=
document
.
cookie
;
return
n
&&
(
n
=
n
.
split
(
";"
),
n
.
forEach
(
function
(
n
){
if
(
n
.
indexOf
(
e
)
>-
1
)
return
void
(
t
=
decodeURIComponent
(
n
.
replace
(
e
+
"="
,
""
).
trim
()))})),
t
}
return
{
boys
:
1
,
girls
:
2
,
kids
:
3
,
lifestyle
:
4
}[
e
(
"_Channel"
)]};
t
.
getAppVersion
=
function
(){
var
e
=
window
.
qs
.
app_version
||
window
.
qs
.
appVersion
;
return
e
};
var
n
=
{
"baidu.com"
:
0x5af3107a4037
,
"so.com"
:
0x5af3107a4031
,
"sogou.com"
:
0x5af3107a4035
,
"bing.com"
:
0x5af3107a4039
,
"m.sm.cn"
:
0x5af3107a403b
,
"google.com"
:
0x5af3107a403d
};
t
.
getMktcBySeo
=
function
(){
var
e
,
t
=
document
.
referrer
;
for
(
var
o
in
n
)
if
(
t
.
indexOf
(
o
)
>-
1
){
e
=
n
[
o
];
break
}
return
e
},
t
.
setFontSize
=
function
(){
var
e
=
document
.
documentElement
;
if
(
!
e
.
style
.
fontSize
){
var
t
=
e
.
clientWidth
;
if
(
!
t
)
return
;
t
>=
640
?
e
.
style
.
fontSize
=
"40px"
:
e
.
style
.
fontSize
=
40
*
(
t
/
640
)
+
"px"
}},
t
.
getDownloadStr
=
function
(
e
){
var
t
=
'<div class="top-downloadbar'
;
return
e
&&
(
t
+=
" top-downloadbar-wechat"
),
t
+=
'" id="top-downloadbar"><a href="javascript:void(0);" class="download-close" id="download-close"></a>\t <span class="download-icon"></span><span class="download-text">Yoho!Buy有货</span>'
,
e
?(
t
+=
'<a class="download-go-wechat" id="download-go" href="https://union.yoho.cn/union/app-downloads.html">立即打开</a>'
,
t
+=
'<a class="download-wechat" id="download-wechat" href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5ODI5MDA4MA==&scene=110#wechat_redirect">加关注</a></div>'
):(
t
+=
'<p class="download-text-desc">新用户送惊喜礼包</p>'
,
t
+=
'<a class="download-go" id="download-go" href="https://union.yoho.cn/union/app-downloads.html">立即打开</a></div>'
),
t
},
t
.
getAppPath
=
function
(){
var
e
=
document
.
getElementById
(
"main-wrap"
).
dataset
.
apppath
;
return
e
=
(
e
||
""
).
replace
(
"yohobuy://yohobuy.com/goapp?"
,
""
)
||
'openby:yohobuy={"action":"go.home","params":{"gender":"1","channel":"2"}}'
}},
function
(
e
,
t
){
function
n
(){
var
e
=
document
.
domain
.
split
(
"."
),
t
=
e
.
length
;
return
t
>
1
&&
isNaN
(
e
[
t
-
1
])?
"."
+
e
[
t
-
2
]
+
"."
+
e
[
t
-
1
]:
document
.
domain
}
e
.
exports
=
{
version
:
"1.0"
,
yasPath
:
"/web/"
,
yasDomain
:
n
(),
yasImgDomain
:
"//analytics.m.yohobuy.com/yas.gif"
,
yasMobileDomain
:
"//analytics.m.yohobuy.com/yas_mobile"
}},
function
(
e
,
t
,
n
){
t
=
e
.
exports
=
n
(
4
)(),
t
.
push
([
e
.
id
,
'.top-downloadbar{display:block;height:2.25rem;background:rgba(68,68,68,.95);width:100%;padding:.125rem 0;position:relative;box-sizing:content-box}.top-downloadbar .download-close{margin-left:.25rem;width:.7rem;height:.7rem;background-image:url("data:image/png;base64,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")}.top-downloadbar .download-close,.top-downloadbar .download-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-size:cover}.top-downloadbar .download-icon{width:2rem;height:2rem;left:1.25rem;background-image:url("data:image/png;base64,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")}.top-downloadbar .download-text{position:absolute;top:50%;-webkit-transform:translateY(-80%);transform:translateY(-80%);left:3.5rem;color:#fff;font-size:.6rem}.top-downloadbar-wechat .download-text{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.top-downloadbar .download-text-desc{position:absolute;top:50%;-webkit-transform:translateY(-10%) scale(.5);transform:translateY(-10%) scale(.5);-webkit-transform-origin:left center;transform-origin:left center;left:3.5rem;color:#c7c7c7;font-size:1rem}.top-downloadbar .download-go{right:.375rem;background:red}.top-downloadbar .download-go,.top-downloadbar .download-go-wechat{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:.6rem;padding:0 .375rem;height:1.125rem;line-height:1.125rem;border-radius:.125rem;color:#fff;text-decoration:none}.top-downloadbar .download-go-wechat{right:3.425rem;background:#000}.top-downloadbar .download-wechat{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:.375rem;font-size:.6rem;padding:0 .375rem;height:1.125rem;line-height:1.125rem;border-radius:.125rem;background:red;color:#fff;text-decoration:none}'
,
""
])},
function
(
e
,
t
){
e
.
exports
=
function
(){
var
e
=
[];
return
e
.
toString
=
function
(){
for
(
var
e
=
[],
t
=
0
;
t
<
this
.
length
;
t
++
){
var
n
=
this
[
t
];
n
[
2
]?
e
.
push
(
"@media "
+
n
[
2
]
+
"{"
+
n
[
1
]
+
"}"
):
e
.
push
(
n
[
1
])}
return
e
.
join
(
""
)},
e
.
i
=
function
(
t
,
n
){
"string"
==
typeof
t
&&
(
t
=
[[
null
,
t
,
""
]]);
for
(
var
o
=
{},
r
=
0
;
r
<
this
.
length
;
r
++
){
var
i
=
this
[
r
][
0
];
"number"
==
typeof
i
&&
(
o
[
i
]
=!
0
)}
for
(
r
=
0
;
r
<
t
.
length
;
r
++
){
var
a
=
t
[
r
];
"number"
==
typeof
a
[
0
]
&&
o
[
a
[
0
]]
||
(
n
&&!
a
[
2
]?
a
[
2
]
=
n
:
n
&&
(
a
[
2
]
=
"("
+
a
[
2
]
+
") and ("
+
n
+
")"
),
e
.
push
(
a
))}},
e
}},
function
(
e
,
t
,
n
){
function
o
(
e
,
t
){
for
(
var
n
=
0
;
n
<
e
.
length
;
n
++
){
var
o
=
e
[
n
],
r
=
f
[
o
.
id
];
if
(
r
){
r
.
refs
++
;
for
(
var
i
=
0
;
i
<
r
.
parts
.
length
;
i
++
)
r
.
parts
[
i
](
o
.
parts
[
i
]);
for
(;
i
<
o
.
parts
.
length
;
i
++
)
r
.
parts
.
push
(
c
(
o
.
parts
[
i
],
t
))}
else
{
for
(
var
a
=
[],
i
=
0
;
i
<
o
.
parts
.
length
;
i
++
)
a
.
push
(
c
(
o
.
parts
[
i
],
t
));
f
[
o
.
id
]
=
{
id
:
o
.
id
,
refs
:
1
,
parts
:
a
}}}}
function
r
(
e
){
for
(
var
t
=
[],
n
=
{},
o
=
0
;
o
<
e
.
length
;
o
++
){
var
r
=
e
[
o
],
i
=
r
[
0
],
a
=
r
[
1
],
s
=
r
[
2
],
d
=
r
[
3
],
c
=
{
css
:
a
,
media
:
s
,
sourceMap
:
d
};
n
[
i
]?
n
[
i
].
parts
.
push
(
c
):
t
.
push
(
n
[
i
]
=
{
id
:
i
,
parts
:[
c
]})}
return
t
}
function
i
(
e
,
t
){
var
n
=
g
(),
o
=
y
[
y
.
length
-
1
];
if
(
"top"
===
e
.
insertAt
)
o
?
o
.
nextSibling
?
n
.
insertBefore
(
t
,
o
.
nextSibling
):
n
.
appendChild
(
t
):
n
.
insertBefore
(
t
,
n
.
firstChild
),
y
.
push
(
t
);
else
{
if
(
"bottom"
!==
e
.
insertAt
)
throw
new
Error
(
"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'."
);
n
.
appendChild
(
t
)}}
function
a
(
e
){
e
.
parentNode
.
removeChild
(
e
);
var
t
=
y
.
indexOf
(
e
);
t
>=
0
&&
y
.
splice
(
t
,
1
)}
function
s
(
e
){
var
t
=
document
.
createElement
(
"style"
);
return
t
.
type
=
"text/css"
,
i
(
e
,
t
),
t
}
function
d
(
e
){
var
t
=
document
.
createElement
(
"link"
);
return
t
.
rel
=
"stylesheet"
,
i
(
e
,
t
),
t
}
function
c
(
e
,
t
){
var
n
,
o
,
r
;
if
(
t
.
singleton
){
var
i
=
v
++
;
n
=
w
||
(
w
=
s
(
t
)),
o
=
u
.
bind
(
null
,
n
,
i
,
!
1
),
r
=
u
.
bind
(
null
,
n
,
i
,
!
0
)}
else
e
.
sourceMap
&&
"function"
==
typeof
URL
&&
"function"
==
typeof
URL
.
createObjectURL
&&
"function"
==
typeof
URL
.
revokeObjectURL
&&
"function"
==
typeof
Blob
&&
"function"
==
typeof
btoa
?(
n
=
d
(
t
),
o
=
p
.
bind
(
null
,
n
),
r
=
function
(){
a
(
n
),
n
.
href
&&
URL
.
revokeObjectURL
(
n
.
href
)}):(
n
=
s
(
t
),
o
=
l
.
bind
(
null
,
n
),
r
=
function
(){
a
(
n
)});
return
o
(
e
),
function
(
t
){
if
(
t
){
if
(
t
.
css
===
e
.
css
&&
t
.
media
===
e
.
media
&&
t
.
sourceMap
===
e
.
sourceMap
)
return
;
o
(
e
=
t
)}
else
r
()}}
function
u
(
e
,
t
,
n
,
o
){
var
r
=
n
?
""
:
o
.
css
;
if
(
e
.
styleSheet
)
e
.
styleSheet
.
cssText
=
b
(
t
,
r
);
else
{
var
i
=
document
.
createTextNode
(
r
),
a
=
e
.
childNodes
;
a
[
t
]
&&
e
.
removeChild
(
a
[
t
]),
a
.
length
?
e
.
insertBefore
(
i
,
a
[
t
]):
e
.
appendChild
(
i
)}}
function
l
(
e
,
t
){
var
n
=
t
.
css
,
o
=
t
.
media
;
if
(
o
&&
e
.
setAttribute
(
"media"
,
o
),
e
.
styleSheet
)
e
.
styleSheet
.
cssText
=
n
;
else
{
for
(;
e
.
firstChild
;)
e
.
removeChild
(
e
.
firstChild
);
e
.
appendChild
(
document
.
createTextNode
(
n
))}}
function
p
(
e
,
t
){
var
n
=
t
.
css
,
o
=
t
.
sourceMap
;
o
&&
(
n
+=
"\n/*# sourceMappingURL=data:application/json;base64,"
+
btoa
(
unescape
(
encodeURIComponent
(
JSON
.
stringify
(
o
))))
+
" */"
);
var
r
=
new
Blob
([
n
],{
type
:
"text/css"
}),
i
=
e
.
href
;
e
.
href
=
URL
.
createObjectURL
(
r
),
i
&&
URL
.
revokeObjectURL
(
i
)}
var
f
=
{},
h
=
function
(
e
){
var
t
;
return
function
(){
return
"undefined"
==
typeof
t
&&
(
t
=
e
.
apply
(
this
,
arguments
)),
t
}},
m
=
h
(
function
(){
return
/msie
[
6-9
]\b
/
.
test
(
window
.
navigator
.
userAgent
.
toLowerCase
())}),
g
=
h
(
function
(){
return
document
.
head
||
document
.
getElementsByTagName
(
"head"
)[
0
]}),
w
=
null
,
v
=
0
,
y
=
[];
e
.
exports
=
function
(
e
,
t
){
t
=
t
||
{},
"undefined"
==
typeof
t
.
singleton
&&
(
t
.
singleton
=
m
()),
"undefined"
==
typeof
t
.
insertAt
&&
(
t
.
insertAt
=
"bottom"
);
var
n
=
r
(
e
);
return
o
(
n
,
t
),
function
(
e
){
for
(
var
i
=
[],
a
=
0
;
a
<
n
.
length
;
a
++
){
var
s
=
n
[
a
],
d
=
f
[
s
.
id
];
d
.
refs
--
,
i
.
push
(
d
)}
if
(
e
){
var
c
=
r
(
e
);
o
(
c
,
t
)}
for
(
var
a
=
0
;
a
<
i
.
length
;
a
++
){
var
d
=
i
[
a
];
if
(
0
===
d
.
refs
){
for
(
var
u
=
0
;
u
<
d
.
parts
.
length
;
u
++
)
d
.
parts
[
u
]();
delete
f
[
d
.
id
]}}}};
var
b
=
function
(){
var
e
=
[];
return
function
(
t
,
n
){
return
e
[
t
]
=
n
,
e
.
filter
(
Boolean
).
join
(
"\n"
)}}()},
function
(
e
,
t
,
n
){
var
o
=
n
(
3
);
"string"
==
typeof
o
&&
(
o
=
[[
e
.
id
,
o
,
""
]]);
n
(
5
)(
o
,{});
o
.
locals
&&
(
e
.
exports
=
o
.
locals
)},
function
(
module
,
exports
){
"object"
!=
typeof
JSON
&&
(
JSON
=
{}),
function
(){
"use strict"
;
function
f
(
e
){
return
e
<
10
?
"0"
+
e
:
e
}
function
this_value
(){
return
this
.
valueOf
()}
function
quote
(
e
){
return
rx_escapable
.
lastIndex
=
0
,
rx_escapable
.
test
(
e
)?
'"'
+
e
.
replace
(
rx_escapable
,
function
(
e
){
var
t
=
meta
[
e
];
return
"string"
==
typeof
t
?
t
:
"\\u"
+
(
"0000"
+
e
.
charCodeAt
(
0
).
toString
(
16
)).
slice
(
-
4
)})
+
'"'
:
'"'
+
e
+
'"'
}
function
str
(
e
,
t
){
var
n
,
o
,
r
,
i
,
a
,
s
=
gap
,
d
=
t
[
e
];
switch
(
d
&&
"object"
==
typeof
d
&&
"function"
==
typeof
d
.
toJSON
&&
(
d
=
d
.
toJSON
(
e
)),
"function"
==
typeof
rep
&&
(
d
=
rep
.
call
(
t
,
e
,
d
)),
typeof
d
){
case
"string"
:
return
quote
(
d
);
case
"number"
:
return
isFinite
(
d
)?
String
(
d
):
"null"
;
case
"boolean"
:
case
"null"
:
return
String
(
d
);
case
"object"
:
if
(
!
d
)
return
"null"
;
if
(
gap
+=
indent
,
a
=
[],
"[object Array]"
===
Object
.
prototype
.
toString
.
apply
(
d
)){
for
(
i
=
d
.
length
,
n
=
0
;
n
<
i
;
n
+=
1
)
a
[
n
]
=
str
(
n
,
d
)
||
"null"
;
return
r
=
0
===
a
.
length
?
"[]"
:
gap
?
"[\n"
+
gap
+
a
.
join
(
",\n"
+
gap
)
+
"\n"
+
s
+
"]"
:
"["
+
a
.
join
(
","
)
+
"]"
,
gap
=
s
,
r
}
if
(
rep
&&
"object"
==
typeof
rep
)
for
(
i
=
rep
.
length
,
n
=
0
;
n
<
i
;
n
+=
1
)
"string"
==
typeof
rep
[
n
]
&&
(
o
=
rep
[
n
],
r
=
str
(
o
,
d
),
r
&&
a
.
push
(
quote
(
o
)
+
(
gap
?
": "
:
":"
)
+
r
));
else
for
(
o
in
d
)
Object
.
prototype
.
hasOwnProperty
.
call
(
d
,
o
)
&&
(
r
=
str
(
o
,
d
),
r
&&
a
.
push
(
quote
(
o
)
+
(
gap
?
": "
:
":"
)
+
r
));
return
r
=
0
===
a
.
length
?
"{}"
:
gap
?
"{\n"
+
gap
+
a
.
join
(
",\n"
+
gap
)
+
"\n"
+
s
+
"}"
:
"{"
+
a
.
join
(
","
)
+
"}"
,
gap
=
s
,
r
}}
var
rx_one
=
/^
[\]
,:{}
\s]
*$/
,
rx_two
=
/
\\(?:[
"
\\\/
bfnrt
]
|u
[
0-9a-fA-F
]{4})
/g
,
rx_three
=
/"
[^
"
\\\n\r]
*"|true|false|null|-
?\d
+
(?:\.\d
*
)?(?:[
eE
][
+
\-]?\d
+
)?
/g
,
rx_four
=
/
(?:
^|:|,
)(?:\s
*
\[)
+/g
,
rx_escapable
=
/
[\\\"\u
0000-
\u
001f
\u
007f-
\u
009f
\u
00ad
\u
0600-
\u
0604
\u
070f
\u
17b4
\u
17b5
\u
200c-
\u
200f
\u
2028-
\u
202f
\u
2060-
\u
206f
\u
feff
\u
fff0-
\u
ffff
]
/g
,
rx_dangerous
=
/
[\u
0000
\u
00ad
\u
0600-
\u
0604
\u
070f
\u
17b4
\u
17b5
\u
200c-
\u
200f
\u
2028-
\u
202f
\u
2060-
\u
206f
\u
feff
\u
fff0-
\u
ffff
]
/g
;
"function"
!=
typeof
Date
.
prototype
.
toJSON
&&
(
Date
.
prototype
.
toJSON
=
function
(){
return
isFinite
(
this
.
valueOf
())?
this
.
getUTCFullYear
()
+
"-"
+
f
(
this
.
getUTCMonth
()
+
1
)
+
"-"
+
f
(
this
.
getUTCDate
())
+
"T"
+
f
(
this
.
getUTCHours
())
+
":"
+
f
(
this
.
getUTCMinutes
())
+
":"
+
f
(
this
.
getUTCSeconds
())
+
"Z"
:
null
},
Boolean
.
prototype
.
toJSON
=
this_value
,
Number
.
prototype
.
toJSON
=
this_value
,
String
.
prototype
.
toJSON
=
this_value
);
var
gap
,
indent
,
meta
,
rep
;
"function"
!=
typeof
JSON
.
stringify
&&
(
meta
=
{
"\b"
:
"\\b"
,
"\t"
:
"\\t"
,
"\n"
:
"\\n"
,
"\f"
:
"\\f"
,
"\r"
:
"\\r"
,
'"'
:
'\\"'
,
"\\"
:
"\\\\"
},
JSON
.
stringify
=
function
(
e
,
t
,
n
){
var
o
;
if
(
gap
=
""
,
indent
=
""
,
"number"
==
typeof
n
)
for
(
o
=
0
;
o
<
n
;
o
+=
1
)
indent
+=
" "
;
else
"string"
==
typeof
n
&&
(
indent
=
n
);
if
(
rep
=
t
,
t
&&
"function"
!=
typeof
t
&&
(
"object"
!=
typeof
t
||
"number"
!=
typeof
t
.
length
))
throw
new
Error
(
"JSON.stringify"
);
return
str
(
""
,{
""
:
e
})}),
"function"
!=
typeof
JSON
.
parse
&&
(
JSON
.
parse
=
function
(
text
,
reviver
){
function
walk
(
e
,
t
){
var
n
,
o
,
r
=
e
[
t
];
if
(
r
&&
"object"
==
typeof
r
)
for
(
n
in
r
)
Object
.
prototype
.
hasOwnProperty
.
call
(
r
,
n
)
&&
(
o
=
walk
(
r
,
n
),
void
0
!==
o
?
r
[
n
]
=
o
:
delete
r
[
n
]);
return
reviver
.
call
(
e
,
t
,
r
)}
var
j
;
if
(
text
=
String
(
text
),
rx_dangerous
.
lastIndex
=
0
,
rx_dangerous
.
test
(
text
)
&&
(
text
=
text
.
replace
(
rx_dangerous
,
function
(
e
){
return
"\\u"
+
(
"0000"
+
e
.
charCodeAt
(
0
).
toString
(
16
)).
slice
(
-
4
)})),
rx_one
.
test
(
text
.
replace
(
rx_two
,
"@"
).
replace
(
rx_three
,
"]"
).
replace
(
rx_four
,
""
)))
return
j
=
eval
(
"("
+
text
+
")"
),
"function"
==
typeof
reviver
?
walk
({
""
:
j
},
""
):
j
;
throw
new
SyntaxError
(
"JSON.parse"
)})}(),
module
.
exports
=
JSON
},
function
(
e
,
t
,
n
){
var
o
=
n
(
1
);
e
.
exports
=
function
(
e
,
t
,
n
){
if
(
"undefined"
==
typeof
t
){
var
r
=
null
;
if
(
document
.
cookie
)
for
(
var
i
=
document
.
cookie
.
split
(
";"
),
a
=
0
;
a
<
i
.
length
;
a
++
){
var
s
=
o
.
trim
(
i
[
a
]);
if
(
s
.
substring
(
0
,
e
.
length
+
1
)
==
e
+
"="
){
r
=
decodeURIComponent
(
s
.
substring
(
e
.
length
+
1
));
break
}}
return
r
}
n
=
n
||
{},
null
===
t
&&
(
t
=
""
,
n
.
expires
=-
1
);
var
d
=
""
;
if
(
n
.
expires
&&
(
"number"
==
typeof
n
.
expires
||
n
.
expires
.
toUTCString
)){
var
c
;
"number"
==
typeof
n
.
expires
?(
c
=
new
Date
,
c
.
setTime
(
c
.
getTime
()
+
24
*
n
.
expires
*
60
*
60
*
1
e3
)):
c
=
n
.
expires
,
d
=
"; expires="
+
c
.
toUTCString
()}
var
u
=
n
.
path
?
"; path="
+
n
.
path
:
""
,
l
=
n
.
domain
?
"; domain="
+
n
.
domain
:
""
,
p
=
n
.
secure
?
"; secure"
:
""
;
document
.
cookie
=
[
e
,
"="
,
encodeURIComponent
(
t
),
d
,
u
,
l
,
p
].
join
(
""
)}},
function
(
e
,
t
,
n
){
var
o
=
n
(
1
),
r
=
n
(
2
),
i
=
r
.
yasPath
,
a
=
r
.
yasImgDomain
,
s
=
r
.
yasMobileDomain
,
d
=
function
(
e
,
t
){
var
n
;
return
window
.
XMLHttpRequest
?
n
=
new
XMLHttpRequest
:
"undefined"
!=
typeof
XDomainRequest
?
n
=
new
XDomainRequest
:
window
.
ActiveXObject
&&
(
n
=
new
ActiveXObject
(
"Microsoft.XMLHTTP"
)),
n
};
t
.
imgSend
=
function
(
e
,
t
){
var
n
=
o
.
getAppVersion
();
if
(
!
(
window
.
appBaseLogs
||
n
>=
"5.2.1"
)){
var
r
=
new
Image
(
1
,
1
);
r
.
src
=
a
+
i
+
"?"
+
e
,
r
.
onload
=
function
(){
r
.
onload
=
null
,
t
&&
t
()}}},
t
.
appSend
=
function
(
e
,
t
){
if
(
window
.
appBaseLogs
){
var
n
=
d
();
n
&&
(
n
.
ontimeout
=
function
(
e
){
console
.
log
(
"timeout: "
,
JSON
.
stringify
(
e
))},
n
.
onerror
=
function
(
e
){
console
.
log
(
"error: "
,
JSON
.
stringify
(
e
))},
n
.
onreadystatechange
=
function
(){
4
==
n
.
readyState
&&
200
==
n
.
status
&&
t
&&
t
()},
n
.
open
(
"post"
,(
"https:"
===
document
.
location
.
protocol
?
"https:"
:
"http:"
)
+
s
,
!
0
),
n
.
setRequestHeader
(
"Content-Type"
,
"application/x-www-form-urlencoded"
),
n
.
send
(
e
))}},
t
.
downloadSend
=
function
(
e
,
t
,
n
){
var
o
=
d
();
o
&&
(
o
.
ontimeout
=
function
(
e
){
console
.
log
(
"timeout: "
,
JSON
.
stringify
(
e
))},
o
.
onerror
=
function
(
e
){
console
.
log
(
"error: "
,
JSON
.
stringify
(
e
))},
o
.
onreadystatechange
=
function
(){
4
==
o
.
readyState
&&
200
==
o
.
status
&&
n
&&
n
()},
o
.
open
(
"post"
,(
"https:"
===
document
.
location
.
protocol
?
"https:"
:
"http:"
)
+
e
,
!
0
),
o
.
setRequestHeader
(
"Content-Type"
,
"application/x-www-form-urlencoded"
),
o
.
send
(
t
))}},
function
(
e
,
t
){
t
.
addEventHandler
=
function
(
e
,
t
,
n
){
e
&&
(
e
.
addEventListener
?
e
.
addEventListener
(
t
,
n
,
!
1
):
e
.
attachEvent
?
e
.
attachEvent
(
"on"
+
t
,
n
):
e
[
"on"
+
t
]
=
n
)},
t
.
removeEventHandler
=
function
(
e
,
t
,
n
){
e
&&
(
e
.
removeEventListener
?
e
.
removeEventListener
(
t
,
n
,
!
1
):
e
.
detachEvent
?
e
.
detachEvent
(
"on"
+
t
,
n
):
delete
e
[
"on"
+
t
])}},
function
(
e
,
t
){
t
.
init
=
function
(){
"bind"
in
Function
.
prototype
||
(
Function
.
prototype
.
bind
=
function
(
e
){
var
t
=
this
;
if
(
arguments
.
length
<=
1
)
return
function
(){
return
t
.
apply
(
e
,
arguments
)};
var
n
=
Array
.
prototype
.
slice
.
call
(
arguments
,
1
);
return
function
(){
return
t
.
apply
(
e
,
0
===
arguments
.
length
?
n
:
n
.
concat
(
Array
.
prototype
.
slice
.
call
(
arguments
)))}}),
"trim"
in
String
.
prototype
||
(
String
.
prototype
.
trim
=
function
(){
return
this
.
replace
(
/^
\s
+/
,
""
).
replace
(
/
\s
+$/
,
""
)}),
"indexOf"
in
Array
.
prototype
||
(
Array
.
prototype
.
indexOf
=
function
(
e
,
t
){
void
0
===
t
&&
(
t
=
0
),
t
<
0
&&
(
t
+=
this
.
length
),
t
<
0
&&
(
t
=
0
);
for
(
var
n
=
this
.
length
;
t
<
n
;
t
++
)
if
(
t
in
this
&&
this
[
t
]
===
e
)
return
t
;
return
-
1
}),
"lastIndexOf"
in
Array
.
prototype
||
(
Array
.
prototype
.
lastIndexOf
=
function
(
e
,
t
){
for
(
void
0
===
t
&&
(
t
=
this
.
length
-
1
),
t
<
0
&&
(
t
+=
this
.
length
),
t
>
this
.
length
-
1
&&
(
t
=
this
.
length
-
1
),
t
++
;
t
--
>
0
;)
if
(
t
in
this
&&
this
[
t
]
===
e
)
return
t
;
return
-
1
}),
"forEach"
in
Array
.
prototype
||
(
Array
.
prototype
.
forEach
=
function
(
e
,
t
){
for
(
var
n
=
0
,
o
=
this
.
length
;
n
<
o
;
n
++
)
n
in
this
&&
e
.
call
(
t
,
this
[
n
],
n
,
this
)}),
"map"
in
Array
.
prototype
||
(
Array
.
prototype
.
map
=
function
(
e
,
t
){
for
(
var
n
=
new
Array
(
this
.
length
),
o
=
0
,
r
=
this
.
length
;
o
<
r
;
o
++
)
o
in
this
&&
(
n
[
o
]
=
e
.
call
(
t
,
this
[
o
],
o
,
this
));
return
n
}),
"filter"
in
Array
.
prototype
||
(
Array
.
prototype
.
filter
=
function
(
e
,
t
){
for
(
var
n
,
o
=
[],
r
=
0
,
i
=
this
.
length
;
r
<
i
;
r
++
)
r
in
this
&&
e
.
call
(
t
,
n
=
this
[
r
],
r
,
this
)
&&
o
.
push
(
n
);
return
o
}),
"every"
in
Array
.
prototype
||
(
Array
.
prototype
.
every
=
function
(
e
,
t
){
for
(
var
n
=
0
,
o
=
this
.
length
;
n
<
o
;
n
++
)
if
(
n
in
this
&&!
e
.
call
(
t
,
this
[
n
],
n
,
this
))
return
!
1
;
return
!
0
}),
"some"
in
Array
.
prototype
||
(
Array
.
prototype
.
some
=
function
(
e
,
t
){
for
(
var
n
=
0
,
o
=
this
.
length
;
n
<
o
;
n
++
)
if
(
n
in
this
&&
e
.
call
(
t
,
this
[
n
],
n
,
this
))
return
!
0
;
return
!
1
})}},
function
(
e
,
t
,
n
){
function
o
(
e
){
var
t
=
h
.
merge
(
b
,
I
);
t
=
h
.
merge
(
t
,
k
);
var
n
=
d
();
n
&&
(
t
=
h
.
merge
(
t
,
n
));
var
o
=
i
();
o
&&
(
t
=
h
.
merge
(
t
,
o
),
m
(
"_yasmp"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
}));
var
r
=
m
(
"_yascustjson"
);
if
(
r
){
var
a
=
JSON
.
parse
(
r
);
t
=
h
.
merge
(
t
,
a
),
m
(
"_yascustjson"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
})}
var
s
=
m
(
"_yaserror"
);
if
(
s
){
var
c
=
JSON
.
parse
(
s
);
t
=
h
.
merge
(
t
,
c
),
m
(
"_yaserror"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
})}
var
u
=
h
.
genParam
(
t
);
e
=
e
?
e
:
function
(){},
g
.
imgSend
(
u
,
e
);
var
l
=
m
(
"_yasev"
);
l
&&
g
.
imgSend
(
l
,
function
(){
m
(
"_yasev"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
})})}
function
r
(){
var
e
=
m
(
"_yasvd"
);
return
e
?{
cid
:
e
,
isNew
:
"N"
}:(
e
=
h
.
Random
()
^
2147483647
&
h
.
hashClientInfo
(),
m
(
"_yasvd"
,
e
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
}),{
cid
:
e
,
isNew
:
"Y"
})}
function
i
(){
var
e
=
m
(
"_yasmp"
);
if
(
e
){
var
t
=
e
.
split
(
","
);
if
(
3
===
t
.
length
)
return
{
x
:
t
[
0
],
y
:
t
[
1
],
et
:
t
[
2
]};
if
(
4
===
t
.
length
)
return
{
x
:
t
[
0
],
y
:
t
[
1
],
et
:
t
[
2
],
ix
:
t
[
3
]}}
return
null
}
function
a
(
e
){
var
t
=
0
,
n
=
0
;
return
e
.
pageX
||
e
.
pageY
?(
t
=
e
.
pageX
,
n
=
e
.
pageY
):(
e
.
clientX
||
e
.
clientY
)
&&
(
t
=
e
.
clientX
+
document
.
body
.
scrollLeft
+
document
.
documentElement
.
scrollLeft
,
n
=
e
.
clientY
+
document
.
body
.
scrollTop
+
document
.
documentElement
.
scrollTop
),
t
-=
window
.
screen
.
width
/
2
,
n
=
window
.
screen
.
height
/
2
-
n
,{
x
:
t
,
y
:
n
}}
function
s
(){
var
e
=
window
.
qs
.
mkt_code
||
window
.
qs
.
union_type
||
h
.
getMktcBySeo
();
if
(
e
){
var
t
=
{
path
:
"/"
,
domain
:
y
,
expires
:
new
Date
(
Date
.
now
()
+
6048
e5
)};
S
?
m
(
"mkt_code"
,
e
,
t
):
m
(
"mkt_code"
)
&&
"100000000000349"
!==
e
||
m
(
"mkt_code"
,
e
,
t
)}}
function
d
(){
var
e
=
m
(
"mkt_code"
)
||
window
.
qs
.
mkt_code
||
window
.
qs
.
union_type
;
return
e
?{
mktc
:
e
}:
null
}
function
c
(){
for
(
var
e
=
window
.
qs
.
mkt_code
||
window
.
qs
.
union_type
||
h
.
getMktcBySeo
()
||
"100000000000349"
,
t
=
document
.
getElementsByTagName
(
"a"
),
n
=
0
;
n
<
t
.
length
;
n
++
){
var
o
=
t
[
n
].
getAttribute
(
"href"
)
||
""
;
if
(
o
.
indexOf
(
"union.yoho.cn/union/downapp.html"
)
>-
1
||
o
.
indexOf
(
"union.yoho.cn/union/app-downloads.html"
)
>-
1
||
o
.
indexOf
(
"union.yoho.cn/union/ClickUnionRest/addUnion4Jump"
)
>-
1
){
var
r
=
[];
e
&&
o
.
indexOf
(
"union_type"
)
===-
1
&&
r
.
push
(
"union_type="
+
e
),
o
.
indexOf
(
"client_id"
)
===-
1
&&
r
.
push
(
"client_id="
+
U
.
cid
),
o
.
indexOf
(
"openby:yohobuy"
)
===-
1
&&
r
.
push
(
h
.
getAppPath
()),
r
.
length
&&
(
o
+=
o
.
indexOf
(
"?"
)
===-
1
?
"?"
:
"&"
,
o
+=
r
.
join
(
"&"
),
t
[
n
].
setAttribute
(
"href"
,
o
)),
w
.
addEventHandler
(
t
[
n
],
"click"
,
function
(
e
){
C
.
sendCustomInfo
&&
C
.
sendCustomInfo
({
op
:
"YB_DOWNLOAD_C"
,
param
:
JSON
.
stringify
({
C_ID
:
window
.
qs
.
yh_channel
||
h
.
getChannel
()
||
1
,
TO_URL
:
e
.
target
.
getAttribute
(
"href"
)})},
!
0
)})}}}
function
u
(){
var
e
=
document
.
getElementById
(
"no-download"
),
t
=
document
.
getElementById
(
"top-downloadbar"
),
o
=
N
.
some
(
function
(
e
){
return
new
RegExp
(
e
,
"i"
).
test
(
location
.
href
)});
if
(
!
(
e
||
window
.
qs
.
nodownload
||
"app"
===
window
.
qs
.
openrefer
||
t
||
o
)
&&!
x
&&
(
A
||
S
)
&&
(
E
||
O
)){
if
(
t
=
document
.
getElementById
(
"float-layer-app"
),
t
&&
t
.
parentNode
.
removeChild
(
t
),
m
(
"_downloadBar"
))
return
;
h
.
setFontSize
();
var
r
=
(
n
(
6
),
document
.
createElement
(
"div"
));
r
.
innerHTML
=
h
.
getDownloadStr
(
S
),
document
.
body
.
insertBefore
(
r
,
document
.
body
.
firstChild
);
var
i
=
document
.
getElementById
(
"download-close"
);
w
.
addEventHandler
(
i
,
"click"
,
function
(){
m
(
"_downloadBar"
,
"close"
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
new
Date
(
Date
.
now
()
+
6
e4
)}),
g
.
downloadSend
(
"//m.yohobuy.com/activitylog.json?close"
,
""
),
r
.
style
.
display
=
"none"
,
_hmt
&&
_hmt
.
push
&&
_hmt
.
push
([
"_trackEvent"
,
"顶部下载条目"
,
"点击关闭Banner"
])});
var
a
=
document
.
getElementById
(
"download-go"
);
w
.
addEventHandler
(
a
,
"click"
,
function
(
e
){
g
.
downloadSend
(
"//m.yohobuy.com/activitylog.json?download"
,
""
),
_hmt
&&
_hmt
.
push
&&
_hmt
.
push
([
"_trackEvent"
,
"顶部下载条目"
,
"所有打开和下载"
,
encodeURIComponent
(
e
.
currentTarget
.
getAttribute
(
"href"
))])});
var
s
=
document
.
getElementById
(
"download-wechat"
);
w
.
addEventHandler
(
s
,
"click"
,
function
(){
g
.
downloadSend
(
"//m.yohobuy.com/activitylog.json?attenion"
,
""
),
_hmt
&&
_hmt
.
push
&&
_hmt
.
push
([
"_trackEvent"
,
"顶部下载条目"
,
"微信里面关注"
])})}}
function
l
(
e
,
t
,
n
,
o
,
r
){
var
i
=
m
(
"_yasev"
);
i
?
i
+=
"&"
:
i
=
""
,
m
(
"_yasev"
,
i
+
"vd="
+
I
.
vd
+
"&t="
+
e
+
"&i="
+
t
+
"&l="
+
o
+
"&v="
+
r
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
}),
V
++
}
function
p
(
e
,
t
){
e
.
av
&&
(
window
.
indx
=
e
.
indx
,
window
.
originUrl
=
e
.
origin
||
location
.
href
,
window
.
appBaseLogs
=
{
device
:{
ak
:
e
.
ak
,
udid
:
e
.
udid
},
status
:[{
av
:
e
.
av
,
udid
:
e
.
udid
,
sid
:
e
.
sid
}],
events
:[{
uid
:
e
.
uid
,
sid
:
e
.
sid
,
abtype
:
e
.
abtype
}]},
window
.
originUrl
&&
window
.
qs
&&
C
.
sendAppLogs
({
appop
:
"YB_H5_PAGE_OPEN_L"
,
param
:
JSON
.
stringify
({
C_ID
:
window
.
qs
.
yh_channel
||
h
.
getChannel
()
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
ACTION_URL
:
t
})},
!
1
))}
n
(
7
);
var
f
=
n
(
11
);
f
.
init
();
var
h
=
n
(
1
),
m
=
n
(
8
),
g
=
n
(
9
),
w
=
n
(
10
),
v
=
n
(
2
),
y
=
(
v
.
version
,
v
.
yaPath
,
v
.
yasDomain
),
b
=
{
h
:
document
.
domain
,
p
:
window
.
location
.
port
,
u
:
window
.
location
.
pathname
,
ft
:
0
,
fst
:
0
,
sv
:
""
,
ab
:
m
(
"ab_5"
)
||
""
,
op
:
"YB_PAGE_OPEN_L"
,
apf
:
window
.
location
.
search
.
indexOf
(
"app_version="
)
>=
0
?
"Y"
:
"N"
},
x
=
/yohobuy/i
.
test
(
navigator
.
userAgent
)
||
/app_version=/i
.
test
(
window
.
location
.
search
)
||!!
window
.
yohoInterface
,
A
=
/
(
iPhone|Android|iPad|iPod|iOS
)
/i
.
test
(
navigator
.
userAgent
),
S
=
/micromessenger/i
.
test
(
navigator
.
userAgent
),
E
=
/m
\.
yohobuy
\.
com/i
.
test
(
document
.
domain
),
O
=
/feature
\.
yoho
\.
cn/i
.
test
(
document
.
domain
)
||
/activity
\.
yoho
\.
cn/i
.
test
(
document
.
domain
),
N
=
[
"m.yohobuy.com/brands"
,
"m.yohobuy.com/passport"
],
U
=
r
(),
I
=
{
ak
:
""
,
cd
:
U
.
cid
,
vd
:(
new
Date
).
getTime
()
+
U
.
cid
,
ud
:
""
,
rf
:
document
.
referrer
,
ckf
:
U
.
isNew
},
R
=
h
.
flashChecker
(),
k
=
{
sr
:
window
.
screen
.
width
+
"x"
+
window
.
screen
.
height
,
wr
:
window
.
screen
.
availWidth
+
"x"
+
window
.
screen
.
availHeight
,
sd
:
window
.
screen
.
colorDepth
,
ln
:
window
.
navigator
.
language
?
window
.
navigator
.
language
:
window
.
navigator
.
browserLanguage
,
sy
:
window
.
navigator
.
platform
,
ce
:
window
.
navigator
.
cookieEnabled
,
fv
:
R
.
f
?
R
.
v
:
0
},
D
=
function
(){},
C
=
function
(
e
,
t
,
n
,
r
,
i
,
d
){
function
l
(
e
,
t
,
n
){
O
=
"This page contains error! \n\n"
,
O
+=
"Error message is:"
+
e
+
"\n"
,
O
+=
"URL is: "
+
t
+
"\n"
,
O
+=
"Line is:"
+
n
+
"\n\n"
;
var
o
=
JSON
.
stringify
({
er
:
O
});
return
m
(
"_yaserror"
,
o
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
}),
!
1
}
window
.
qs
=
h
.
queryString
(),
I
.
ak
=
n
,
b
.
sv
=
t
,
I
.
ud
=
r
?
r
:
""
,
I
.
ts
=
(
new
Date
).
getTime
();
var
p
=
window
.
qs
.
yh_channel
||
h
.
getChannel
();
if
(
p
&&
(
b
.
param
=
JSON
.
stringify
({
C_ID
:
p
})),
m
(
"_yasgeo"
)){
var
f
=
m
(
"_yasgeo"
).
split
(
","
);
I
.
la
=
f
[
0
],
I
.
lo
=
f
[
1
],
m
(
"_yasgeo"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
})}
var
g
=
(
new
Date
).
getTime
(),
x
=
null
,
A
=!
1
;
if
(
b
.
ft
=
g
-
e
,
w
.
addEventHandler
(
window
,
"load"
,
function
(
t
){
var
n
=
(
new
Date
).
getTime
();
b
.
fst
=
n
-
e
,
w
.
removeEventHandler
(
window
,
"load"
,
arguments
.
callee
),
window
.
clearTimeout
(
x
),
A
||
o
()}),
x
=
window
.
setTimeout
(
function
(){
b
.
fst
=
0
,
b
.
fse
=
">3s"
,
A
=!
0
,
o
()},
3
e3
),
i
&&
h
.
getGeo
(
function
(
e
,
t
){
e
&&
m
(
"_yasgeo"
,
e
+
","
+
t
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
})}),
u
(),
s
(),
c
(),
d
&&
d
[
0
])
for
(
var
S
=
0
,
E
=
d
.
length
;
S
<
E
;
S
++
)
d
[
S
].
setAttribute
(
"yoho_index"
,
S
+
1
);
else
w
.
addEventHandler
(
document
,
"click"
,
function
(
e
){
e
=
e
||
window
.
event
;
var
t
=
e
.
target
||
e
.
srcElement
;
if
(
t
&&
(
"A"
===
t
.
nodeName
||
"IMG"
===
t
.
nodeName
&&
"A"
===
t
.
parentNode
.
nodeName
)){
var
n
=
a
(
e
),
o
=
n
.
x
+
","
+
n
.
y
+
","
+
e
.
type
,
r
=
t
.
getAttribute
(
"yoho_index"
)
||
t
.
parentNode
.
getAttribute
(
"yoho_index"
);
r
&&
(
o
+=
","
+
r
),
m
(
"_yasmp"
,
o
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
})}
ix
=
0
});
onerror
=
l
;
var
O
=
""
},
V
=
0
;
if
(
C
.
add
=
function
(
e
,
t
,
n
,
o
,
r
){
V
>
3
?
g
.
imgSend
(
m
(
"_yasev"
),
function
(){
m
(
"_yasev"
,
null
,{
path
:
"/"
,
domain
:
v
.
yasDomain
,
expires
:
73
e3
}),
V
=
0
,
l
(
e
,
t
,
n
,
o
,
r
)}):
l
(
e
,
t
,
n
,
o
,
r
)},
C
.
sendMouseEvent
=
function
(
e
,
t
){
e
=
e
||
window
.
event
;
var
n
=
a
(
e
);
if
(
t
){
var
o
=
{
x
:
n
.
x
,
y
:
n
.
y
,
et
:
e
.
type
},
r
=
h
.
merge
(
b
,
I
);
r
=
h
.
merge
(
r
,
k
),
r
=
h
.
merge
(
r
,
o
);
var
i
=
h
.
genParam
(
r
);
g
.
imgSend
(
i
,
function
(){})}
else
m
(
"_yasmp"
,
n
.
x
+
","
+
n
.
y
+
","
+
e
.
type
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
})},
C
.
sendCustomInfo
=
function
(
e
,
t
,
n
){
if
(
window
.
appBaseLogs
&&
e
.
appop
)
return
e
.
op
=
e
.
appop
,
C
.
sendAppLogs
(
e
,
!
0
);
if
(
delete
e
.
appop
,
e
.
ts
=
(
new
Date
).
getTime
(),
t
){
var
o
=
h
.
merge
(
b
,
I
);
o
=
h
.
merge
(
o
,
k
),
o
=
h
.
merge
(
o
,
e
);
var
r
=
d
();
r
&&
(
o
=
h
.
merge
(
o
,
r
));
var
i
=
h
.
genParam
(
o
);
g
.
imgSend
(
i
,
n
)}
else
{
var
a
=
JSON
.
stringify
(
e
);
m
(
"_yascustjson"
,
a
,{
path
:
"/"
,
domain
:
y
,
expires
:
73
e3
})}},
C
.
sendAppLogs
=
function
(
e
,
t
){
if
(
window
.
appBaseLogs
){
var
n
=
JSON
.
parse
(
e
.
param
);
n
.
F_URL
&&
(
n
.
F_URL
=
decodeURIComponent
(
n
.
F_URL
));
var
o
=
window
.
appBaseLogs
.
events
[
0
];
o
.
abtype
&&
(
n
.
AB_TYPE
=
o
.
abtype
);
var
r
=
h
.
merge
(
o
,{
ts
:(
new
Date
).
getTime
().
toString
(),
indx
:
++
window
.
indx
,
op
:
e
.
appop
,
param
:
n
}),
i
=
h
.
merge
(
window
.
appBaseLogs
,{
events
:[
r
]});
g
.
appSend
(
"_mlogs="
+
encodeURIComponent
(
JSON
.
stringify
(
i
))),
window
.
_yasloaded
=!
0
,
t
&&
(
window
.
isandroidyas
?
window
.
prompt
(
JSON
.
stringify
({
method
:
"set.analyticEventIndex"
,
arguments
:{
indx
:
window
.
indx
}})):
window
.
yohoInterface
.
triggerEvent
(
D
,
D
,{
method
:
"set.analyticEventIndex"
,
arguments
:{
indx
:
window
.
indx
}}))}},
navigator
.
userAgent
.
indexOf
(
"YohoBuy-android-yas"
)
>-
1
){
window
.
isandroidyas
=!
0
;
var
M
=
window
.
prompt
(
JSON
.
stringify
({
method
:
"get.analyticAppData"
}));
p
(
JSON
.
parse
(
M
||
"{}"
))}
else
w
.
addEventHandler
(
document
,
"deviceready"
,
function
(
e
){
window
.
_yasloaded
=!
1
;
for
(
var
t
=
[],
n
=
document
.
getElementsByTagName
(
"a"
),
o
=
0
;
o
<
n
.
length
;
o
++
){
var
r
=
n
[
o
].
getAttribute
(
"href"
);
!
r
||
/^#.*$/
.
test
(
r
)
||
/^javascript.*$/i
.
test
(
r
)
||
t
.
push
(
r
)}
w
.
addEventHandler
(
document
,
"click"
,
function
(
e
){
if
(
window
.
originUrl
){
e
=
e
||
window
.
event
;
var
t
=
e
.
target
||
e
.
srcElement
;
if
(
t
=
h
.
closest
(
t
,
"a"
)){
var
n
=
{
C_ID
:
window
.
qs
.
yh_channel
||
h
.
getChannel
()
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
F_URL
:
t
.
getAttribute
(
"href"
)},
o
=
t
.
getAttribute
(
"fp"
);
o
&&
(
o
=
JSON
.
parse
(
o
),
n
.
F_ID
=
o
.
F_ID
,
n
.
F_NM
=
o
.
F_NM
,
n
.
F_INDEX
=
o
.
F_INDEX
,
n
.
I_INDEX
=
o
.
I_INDEX
,
n
.
I_NM
=
o
.
I_NM
||
""
),
C
.
sendAppLogs
({
appop
:
"YB_H5_PAGE_FLR_C"
,
param
:
JSON
.
stringify
(
n
)},
!
0
)}}}),
window
.
yohoInterface
.
triggerEvent
(
function
(
e
){
p
(
e
,
t
)},
D
,{
method
:
"get.analyticAppData"
});
var
i
=
setInterval
(
function
(){
window
.
_yasloaded
&&
(
clearInterval
(
i
),
window
.
yohoInterface
.
triggerEvent
(
D
,
D
,{
method
:
"set.analyticEventIndex"
,
arguments
:{
indx
:
window
.
indx
}}))},
500
)});
e
.
exports
=
C
}]);
\ No newline at end of file
...
...
Please
register
or
login
to post a comment