Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuywap-node
·
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
郭成尧
7 years ago
Commit
99f88862b84b4575b3be2867eb91aee4afcb92e6
1 parent
cd29f62a
jssdk
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 additions
and
1255 deletions
public/static/js-sdk/1.3.0/jssdk.js
public/static/js-sdk/1.3.0/jssdk.js
View file @
99f8886
(
function
(
$
)
{
'use strict'
;
function
__$styleInject
(
css
,
returnValue
)
{
if
(
typeof
document
===
'undefined'
)
{
return
returnValue
;
}
css
=
css
||
''
;
var
head
=
document
.
head
||
document
.
getElementsByTagName
(
'head'
)[
0
];
var
style
=
document
.
createElement
(
'style'
);
style
.
type
=
'text/css'
;
head
.
appendChild
(
style
);
if
(
style
.
styleSheet
){
style
.
styleSheet
.
cssText
=
css
;
}
else
{
style
.
appendChild
(
document
.
createTextNode
(
css
));
}
return
returnValue
;
}
$
=
'default'
in
$
?
$
[
'default'
]
:
$
;
/* eslint-disable */
// Noop
function
noop
()
{}
// Generic callback
function
genericCallback
(
data
)
{
lastValue
=
[
data
];
}
// Call if defined
function
callIfDefined
(
method
,
object
,
parameters
)
{
return
method
&&
method
.
apply
&&
method
.
apply
(
object
.
context
||
object
,
parameters
);
}
// Give joining character given url
function
qMarkOrAmp
(
url
)
{
return
(
/
\?
/
.
test
(
url
)
?
"&"
:
"?"
);
}
var
STR_ASYNC
=
"async"
;
var
STR_CHARSET
=
"charset"
;
var
STR_EMPTY
=
""
;
var
STR_ERROR
=
"error"
;
var
STR_INSERT_BEFORE
=
"insertBefore"
;
var
STR_JQUERY_JSONP
=
"_jqjsp"
;
var
STR_ON
=
"on"
;
var
STR_ON_CLICK
=
STR_ON
+
"click"
;
var
STR_ON_ERROR
=
STR_ON
+
STR_ERROR
;
var
STR_ON_LOAD
=
STR_ON
+
"load"
;
var
STR_ON_READY_STATE_CHANGE
=
STR_ON
+
"readystatechange"
;
var
STR_READY_STATE
=
"readyState"
;
var
STR_REMOVE_CHILD
=
"removeChild"
;
var
STR_SCRIPT_TAG
=
"<script>"
;
var
STR_SUCCESS
=
"success"
;
var
STR_TIMEOUT
=
"timeout"
;
var
win
=
window
;
var
Deferred
=
$
.
Deferred
;
var
head
=
$
(
"head"
)[
0
]
||
document
.
documentElement
;
var
pageCache
=
{};
var
count
=
0
;
var
lastValue
;
var
xOptionsDefaults
=
{
//beforeSend: undefined,
//cache: false,
callback
:
STR_JQUERY_JSONP
,
//callbackParameter: undefined,
//charset: undefined,
//complete: undefined,
//context: undefined,
//data: "",
//dataFilter: undefined,
//error: undefined,
//pageCache: false,
//success: undefined,
//timeout: 0,
//traditional: false,
url
:
location
.
href
};
var
opera
=
win
.
opera
;
var
oldIE
=
!!
$
(
"<div>"
).
html
(
"<!--[if IE]><i><![endif]-->"
).
find
(
"i"
).
length
;
// ###################### MAIN FUNCTION ##
function
jsonp
(
xOptions
)
{
// Build data with default
xOptions
=
$
.
extend
({},
xOptionsDefaults
,
xOptions
);
// References to xOptions members (for better minification)
var
successCallback
=
xOptions
.
success
,
errorCallback
=
xOptions
.
error
,
completeCallback
=
xOptions
.
complete
,
dataFilter
=
xOptions
.
dataFilter
,
callbackParameter
=
xOptions
.
callbackParameter
,
successCallbackName
=
xOptions
.
callback
,
cacheFlag
=
xOptions
.
cache
,
pageCacheFlag
=
xOptions
.
pageCache
,
charset
=
xOptions
.
charset
,
url
=
xOptions
.
url
,
data
=
xOptions
.
data
,
timeout
=
xOptions
.
timeout
,
pageCached
,
// Abort/done flag
done
=
0
,
// Life-cycle functions
cleanUp
=
noop
,
// Support vars
supportOnload
,
supportOnreadystatechange
,
// Request execution vars
firstChild
,
script
,
scriptAfter
,
timeoutTimer
;
// If we have Deferreds:
// - substitute callbacks
// - promote xOptions to a promise
Deferred
&&
Deferred
(
function
(
defer
)
{
defer
.
done
(
successCallback
).
fail
(
errorCallback
);
successCallback
=
defer
.
resolve
;
errorCallback
=
defer
.
reject
;
}).
promise
(
xOptions
);
// Create the abort method
xOptions
.
abort
=
function
()
{
!
done
++
&&
cleanUp
();
};
// Call beforeSend if provided (early abort if false returned)
if
(
callIfDefined
(
xOptions
.
beforeSend
,
xOptions
,
[
xOptions
])
===
!
1
||
done
)
{
return
xOptions
;
}
// Control entries
url
=
url
||
STR_EMPTY
;
data
=
data
?
typeof
data
==
"string"
?
data
:
$
.
param
(
data
,
xOptions
.
traditional
)
:
STR_EMPTY
;
// Build final url
url
+=
data
?
qMarkOrAmp
(
url
)
+
data
:
STR_EMPTY
;
// Add callback parameter if provided as option
callbackParameter
&&
(
url
+=
qMarkOrAmp
(
url
)
+
encodeURIComponent
(
callbackParameter
)
+
"=?"
);
// Add anticache parameter if needed
!
cacheFlag
&&
!
pageCacheFlag
&&
(
url
+=
qMarkOrAmp
(
url
)
+
"_"
+
new
Date
().
getTime
()
+
"="
);
// Replace last ? by callback parameter
url
=
url
.
replace
(
/=
\?(
&|$
)
/
,
"="
+
successCallbackName
+
"$1"
);
// Success notifier
function
notifySuccess
(
json
)
{
if
(
!
done
++
)
{
cleanUp
();
// Pagecache if needed
pageCacheFlag
&&
(
pageCache
[
url
]
=
{
s
:
[
json
]
});
// Apply the data filter if provided
dataFilter
&&
(
json
=
dataFilter
.
apply
(
xOptions
,
[
json
]));
// Call success then complete
callIfDefined
(
successCallback
,
xOptions
,
[
json
,
STR_SUCCESS
,
xOptions
]);
callIfDefined
(
completeCallback
,
xOptions
,
[
xOptions
,
STR_SUCCESS
]);
}
}
// Error notifier
function
notifyError
(
type
)
{
if
(
!
done
++
)
{
// Clean up
cleanUp
();
// If pure error (not timeout), cache if needed
pageCacheFlag
&&
type
!=
STR_TIMEOUT
&&
(
pageCache
[
url
]
=
type
);
// Call error then complete
callIfDefined
(
errorCallback
,
xOptions
,
[
xOptions
,
type
]);
callIfDefined
(
completeCallback
,
xOptions
,
[
xOptions
,
type
]);
}
}
// Check page cache
if
(
pageCacheFlag
&&
(
pageCached
=
pageCache
[
url
]))
{
pageCached
.
s
?
notifySuccess
(
pageCached
.
s
[
0
])
:
notifyError
(
pageCached
);
}
else
{
// Install the generic callback
// (BEWARE: global namespace pollution ahoy)
win
[
successCallbackName
]
=
genericCallback
;
// Create the script tag
script
=
$
(
STR_SCRIPT_TAG
)[
0
];
script
.
id
=
STR_JQUERY_JSONP
+
count
++
;
// Set charset if provided
if
(
charset
)
{
script
[
STR_CHARSET
]
=
charset
;
}
opera
&&
opera
.
version
()
<
11.60
?
// onerror is not supported: do not set as async and assume in-order execution.
// Add a trailing script to emulate the event
(
scriptAfter
=
$
(
STR_SCRIPT_TAG
)[
0
]).
text
=
"document.getElementById('"
+
script
.
id
+
"')."
+
STR_ON_ERROR
+
"()"
:
// onerror is supported: set the script as async to avoid requests blocking each others
script
[
STR_ASYNC
]
=
STR_ASYNC
;
// Internet Explorer: event/htmlFor trick
if
(
oldIE
)
{
script
.
htmlFor
=
script
.
id
;
script
.
event
=
STR_ON_CLICK
;
}
// Attached event handlers
script
[
STR_ON_LOAD
]
=
script
[
STR_ON_ERROR
]
=
script
[
STR_ON_READY_STATE_CHANGE
]
=
function
(
result
)
{
// Test readyState if it exists
if
(
!
script
[
STR_READY_STATE
]
||
!
/i/
.
test
(
script
[
STR_READY_STATE
]))
{
try
{
script
[
STR_ON_CLICK
]
&&
script
[
STR_ON_CLICK
]();
}
catch
(
_
)
{}
result
=
lastValue
;
lastValue
=
0
;
result
?
notifySuccess
(
result
[
0
])
:
notifyError
(
STR_ERROR
);
}
};
// Set source
script
.
src
=
url
;
// Re-declare cleanUp function
cleanUp
=
function
cleanUp
(
i
)
{
timeoutTimer
&&
clearTimeout
(
timeoutTimer
);
script
[
STR_ON_READY_STATE_CHANGE
]
=
script
[
STR_ON_LOAD
]
=
script
[
STR_ON_ERROR
]
=
null
;
head
[
STR_REMOVE_CHILD
](
script
);
scriptAfter
&&
head
[
STR_REMOVE_CHILD
](
scriptAfter
);
};
// Append main script
head
[
STR_INSERT_BEFORE
](
script
,
firstChild
=
head
.
firstChild
);
// Append trailing script if needed
scriptAfter
&&
head
[
STR_INSERT_BEFORE
](
scriptAfter
,
firstChild
);
// If a timeout is needed, install it
timeoutTimer
=
timeout
>
0
&&
setTimeout
(
function
()
{
notifyError
(
STR_TIMEOUT
);
},
timeout
);
}
return
xOptions
;
}
// ###################### SETUP FUNCTION ##
jsonp
.
setup
=
function
(
xOptions
)
{
$
.
extend
(
xOptionsDefaults
,
xOptions
);
};
// ###################### INSTALL in jQuery ##
$
.
jsonp
=
jsonp
;
/* eslint-disable */
__$styleInject
(
".featuretip.tip-wrap{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.5)}.featuretip .tip{position:fixed;left:50%;top:50%;margin-left:-140px;margin-top:-140px;width:280px;background:#fff;border-top:40px solid #000;text-align:center;line-height:1.25}.featuretip .tip .title{margin:20px auto;font-size:24px;font-weight:700;text-align:center}.featuretip .tip .highlight{font-size:18px}.featuretip .tip .content{font-size:16px;color:#444;text-align:center}.featuretip .tip .button{display:block;margin:20px auto;width:150px;height:30px;font-size:14px;line-height:30px;text-align:center;color:#fff;background:#000;text-decoration:none}"
,
undefined
);
__$styleInject
(
".feature-coin.tip-wrap{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.5)}.feature-coin .tip{position:fixed;left:50%;top:50%;margin-left:-140px;margin-top:-140px;width:280px;background:#fff;text-align:center;line-height:1.25;background-repeat:no-repeat}.feature-coin .tip .tip-close{position:absolute;right:0;top:0;width:25px;height:25px;line-height:25px;text-align:center;font-size:16px;color:#fff;background:#000;cursor:pointer}.feature-coin .tip .title{margin:21px auto;font-size:22px;font-weight:700;text-align:center}.feature-coin .tip .highlight{font-size:18px}.feature-coin .tip .content{padding:4px;font-size:16px;color:#444;text-align:center;height:48px;overflow:hidden}.feature-coin .bottom-button{text-align:center}.feature-coin .tip .button,.feature-coin .tip .coin{display:inline-block;margin:20px auto;width:116px;height:26px;font-size:14px;line-height:26px;text-align:center;color:#fff;background:#000;text-decoration:none;border:2px solid #000}.feature-coin .tip .coin{color:#000;background:#fff}"
,
undefined
);
var
isMobile
=
{
Android
:
function
Android
()
{
return
navigator
.
userAgent
.
match
(
/Android/i
)
?
true
:
false
;
},
BlackBerry
:
function
BlackBerry
()
{
return
navigator
.
userAgent
.
match
(
/BlackBerry/i
)
?
true
:
false
;
},
iOS
:
function
iOS
()
{
return
navigator
.
userAgent
.
match
(
/iPhone|iPad|iPod/i
)
?
true
:
false
;
},
Windows
:
function
Windows
()
{
return
navigator
.
userAgent
.
match
(
/IEMobile/i
)
?
true
:
false
;
},
any
:
function
any
()
{
return
isMobile
.
Android
()
||
isMobile
.
BlackBerry
()
||
isMobile
.
iOS
()
||
isMobile
.
Windows
();
}
};
var
mycurrency
=
isMobile
.
any
()
?
'//m.yohobuy.com/home/mycurrency'
:
'//www.yohobuy.com/home/currency'
;
var
$tipTmpl
=
$
(
'<div class="featuretip tip-wrap"><div class="tip"><div class="title"></div><div class="content"></div><a class="button" href="">返回</a></div></div>'
);
// eslint-disable-line
var
$cointipTmpl
=
$
(
'<div class="feature-coin tip-wrap"><div class="tip"><div class="tip-close">×</div><div class="title"></div><div class="content"></div><div class="bottom-button"><a class="button" href="">去逛逛</a><a class="coin" href=\''
+
mycurrency
+
'?openby:yohobuy={"action":"go.mine"}\'>查看有货币</a></div></div></div>'
);
// eslint-disable-line
var
_queryString
=
function
_queryString
()
{
if
(
!
window
.
_jssdkQS
)
{
var
vars
=
{},
hash
=
void
0
,
i
=
void
0
,
hashes
=
window
.
location
.
search
.
slice
(
1
).
split
(
'&'
);
for
(
i
=
0
;
i
<
hashes
.
length
;
i
++
)
{
hash
=
hashes
[
i
].
split
(
'='
);
vars
[
hash
[
0
]]
=
hash
[
1
];
}
window
.
_jssdkQS
=
vars
;
}
return
$
.
extend
({},
window
.
_jssdkQS
);
};
var
_sParamByIframe
=
function
_sParamByIframe
()
{
var
paramsObj
=
_queryString
();
var
queryArray
=
[];
var
queryString
=
'?'
;
delete
paramsObj
[
'uid'
];
delete
paramsObj
[
'app_version'
];
delete
paramsObj
[
'client_type'
];
delete
paramsObj
[
'session_key'
];
delete
paramsObj
[
'client_secret'
];
for
(
var
i
in
paramsObj
)
{
queryArray
.
push
(
i
+
'='
+
paramsObj
[
i
]);
}
if
(
!
paramsObj
[
'expires'
])
{
queryArray
.
push
(
'expires='
+
7
*
24
*
60
*
60
*
1000
);
}
queryArray
.
push
(
'callback=jQueryMktCode'
);
queryString
+=
queryArray
.
join
(
'&'
);
$
.
getScript
(
'//m.yohobuy.com/activity/wechat/1111'
+
queryString
,
function
()
{});
// $('<iframe style="display:none;" src="//m.yohobuy.com/activity/wechat/1111' + queryString + '"></iframe>').prependTo('body');
};
var
_bindEvent
=
function
_bindEvent
()
{
var
$body
=
$
(
'body'
);
$body
.
on
(
'click'
,
'.feature-coin .close,.feature-coin .tip-close'
,
function
(
e
)
{
$cointipTmpl
.
fadeOut
();
e
.
preventDefault
();
});
$body
.
on
(
'click'
,
'.feature-coin.tip-wrap'
,
function
(
e
)
{
if
(
'feature-coin tip-wrap'
===
e
.
target
.
className
)
{
$cointipTmpl
.
fadeOut
();
e
.
preventDefault
();
}
});
$body
.
on
(
'click'
,
'.featuretip .close'
,
function
(
e
)
{
$tipTmpl
.
fadeOut
();
e
.
preventDefault
();
});
$body
.
on
(
'click'
,
'.featuretip .refresh'
,
function
()
{
location
.
reload
();
});
$body
.
on
(
'click'
,
'.featuretip.tip-wrap'
,
function
(
e
)
{
if
(
'featuretip tip-wrap'
===
e
.
target
.
className
)
{
$tipTmpl
.
fadeOut
();
e
.
preventDefault
();
}
});
};
var
utils
=
{
queryString
:
_queryString
,
init
:
function
init
()
{
//发送活动页参数
_sParamByIframe
();
// 绑定事件
_bindEvent
();
},
isApp
:
function
isApp
()
{
var
qs
=
_queryString
();
var
isApp
=
!!
qs
.
app_version
||
qs
.
openrefer
===
'app'
&&
qs
.
uid
;
return
!!
isApp
;
},
image
:
function
image
(
url
,
width
,
height
,
mode
,
quality
)
{
mode
=
!
isNaN
(
Number
(
mode
))
?
mode
:
2
;
url
=
url
||
''
;
url
=
url
.
replace
(
/{width}/g
,
width
).
replace
(
/{height}/g
,
height
).
replace
(
/{mode}/g
,
mode
);
if
(
url
.
indexOf
(
'imageView2'
)
>
0
)
{
quality
=
quality
||
90
;
url
+=
'/q/'
+
quality
;
}
return
url
.
replace
(
'quality/80'
,
'quality/60'
).
replace
(
'http:'
,
''
);
},
sParamByIframe
:
function
sParamByIframe
(
params
)
{
$
.
getScript
(
'//m.yohobuy.com/activity/wechat/1111'
+
params
,
function
()
{});
// $('<iframe style="display:none;" src="//m.yohobuy.com/activity/wechat/1111?' + params + '"></iframe>').prependTo('body');
},
showTip
:
function
showTip
(
data
)
{
data
=
data
||
{
title
:
''
,
content
:
''
,
close
:
true
};
$tipTmpl
.
find
(
'.title'
).
html
(
data
.
title
);
$tipTmpl
.
find
(
'.content'
).
html
(
data
.
content
);
if
(
data
.
close
)
{
$tipTmpl
.
find
(
'.button'
).
addClass
(
'close'
);
}
else
{
$tipTmpl
.
find
(
'.button'
).
addClass
(
'refresh'
).
html
(
'刷新'
);
}
$
(
'body'
).
append
(
$tipTmpl
);
$tipTmpl
.
show
();
},
showCoinTip
:
function
showCoinTip
(
data
)
{
data
=
data
||
{
title
:
''
,
content
:
''
,
close
:
true
};
$cointipTmpl
.
find
(
'.title'
).
html
(
data
.
title
);
$cointipTmpl
.
find
(
'.content'
).
html
(
data
.
content
);
if
(
data
.
close
)
{
$cointipTmpl
.
find
(
'.button'
).
addClass
(
'close'
);
}
if
(
data
.
coin
)
{
$cointipTmpl
.
find
(
'.coin'
).
css
(
'display'
,
'inline-block'
);
}
else
{
$cointipTmpl
.
find
(
'.coin'
).
hide
();
}
if
(
data
.
img
)
{
$cointipTmpl
.
find
(
'.tip'
).
css
(
'background-image'
,
'url('
+
data
.
img
+
')'
);
}
$
(
'body'
).
append
(
$cointipTmpl
);
$cointipTmpl
.
show
();
}
};
var
_noLoginUrl
=
function
_noLoginUrl
()
{
var
referrer
=
location
.
href
.
split
(
'?'
)[
0
];
return
'//m.yohobuy.com/signin.html?refer='
+
encodeURIComponent
(
location
.
href
)
+
'&openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"'
+
referrer
.
replace
(
/
\/
/g
,
'\\/'
)
+
'","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}'
;
};
var
user
=
{
uid
:
''
,
noLoginUrl
:
_noLoginUrl
,
init
:
function
init
()
{
var
_this
=
this
;
return
jsonp
({
url
:
'//m.yohobuy.com/passport/login/user?callback=?'
}).
then
(
function
(
res
)
{
if
(
res
.
code
===
200
)
{
_this
.
uid
=
Number
(
res
.
data
)
||
0
;
}
if
(
!
_this
.
uid
&&
utils
.
isApp
())
{
_this
.
uid
=
Number
(
utils
.
queryString
().
uid
)
||
0
;
}
return
$
.
Deferred
().
resolve
(
_this
.
uid
);
},
function
()
{
utils
.
isApp
()
&&
(
_this
.
uid
=
Number
(
utils
.
queryString
().
uid
)
||
0
);
return
$
.
Deferred
().
resolve
(
_this
.
uid
);
});
},
auth
:
function
auth
()
{
if
(
!
this
.
uid
)
{
var
noLoginUrl
=
_noLoginUrl
();
$
(
'a.auth'
).
attr
(
'href'
,
noLoginUrl
);
}
},
favout
:
function
favout
(
skn
)
{
if
(
!
skn
||
!
this
.
uid
)
{
return
;
}
jsonp
({
url
:
'//service.yoho.cn/activity/favorite/addFavorite?productSkn='
+
skn
+
'&uid='
+
this
.
uid
+
'&callback=?'
}).
then
(
function
(
res
)
{
if
(
res
.
code
===
200
)
{
utils
.
showTip
({
content
:
'恭喜您,收藏成功'
,
close
:
true
});
}
else
{
utils
.
showTip
({
content
:
res
.
message
,
close
:
true
});
}
},
function
()
{
utils
.
showTip
({
title
:
'收藏失败<br>请刷新重新领取'
,
content
:
'如多次收藏失败,请联系客服人员<br>带来不便敬请谅解'
,
close
:
false
});
});
},
getMktCode
:
function
getMktCode
()
{
var
mkt_code
=
void
0
;
if
(
this
.
uid
)
{
if
(
Number
(
this
.
uid
)
%
1024
>=
512
)
{
mkt_code
=
100000000000195
;
// 默认的值
}
else
{
mkt_code
=
100000000000193
;
// 个性化,动态接口数据
}
}
else
{
mkt_code
=
100000000000197
;
// 访客接口数据
}
return
mkt_code
;
}
};
var
jsApiList
=
[
'checkJsApi'
,
'onMenuShareTimeline'
,
'onMenuShareAppMessage'
,
'onMenuShareQQ'
,
'onMenuShareWeibo'
,
'onMenuShareQZone'
];
var
shareData
=
{
title
:
document
.
title
,
link
:
location
.
href
,
desc
:
'YOHO!BUY'
,
imgUrl
:
'http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png'
};
var
_getShareDataById
=
function
_getShareDataById
()
{
var
shareId
=
utils
.
queryString
().
share_id
;
if
(
shareId
)
{
return
jsonp
({
url
:
'//m.yohobuy.com/activity/share?callback=?'
,
data
:
{
shareId
:
shareId
}
}).
then
(
function
(
res
)
{
if
(
res
&&
res
.
code
===
200
&&
res
.
data
)
{
shareData
.
title
=
res
.
data
.
title
;
shareData
.
link
=
res
.
data
.
link
||
location
.
href
;
shareData
.
desc
=
res
.
data
.
content
||
res
.
data
.
title
;
shareData
.
imgUrl
=
res
.
data
.
pic
;
}
return
$
.
Deferred
().
resolve
();
},
function
()
{
return
$
.
Deferred
().
resolve
();
});
}
else
{
var
shareTitle
=
$
(
'#shareTitle'
).
val
();
var
shareImg
=
$
(
'#shareImg'
).
val
();
var
shareDesc
=
$
(
'#shareDesc'
).
val
();
var
shareLink
=
$
(
'#shareLink'
).
val
();
shareData
.
title
=
shareTitle
?
shareTitle
:
shareData
.
title
;
shareData
.
imgUrl
=
shareImg
?
shareImg
:
shareData
.
imgUrl
;
shareData
.
desc
=
shareDesc
?
shareDesc
:
shareData
.
desc
;
shareData
.
link
=
shareLink
?
shareLink
:
shareData
.
link
;
return
$
.
Deferred
().
resolve
();
}
};
var
share
=
{
init
:
function
init
()
{
if
(
/QQ/i
.
test
(
navigator
.
userAgent
))
{
$
.
ajax
({
url
:
'//qzonestyle.gtimg.cn/qzone/qzact/common/share/share.js'
,
dataType
:
'script'
,
cache
:
true
,
success
:
function
success
()
{
_getShareDataById
().
then
(
function
()
{
window
.
setShareInfo
&&
window
.
setShareInfo
({
title
:
shareData
.
title
,
summary
:
shareData
.
desc
,
pic
:
shareData
.
imgUrl
,
url
:
shareData
.
link
});
});
}
});
}
if
(
/MicroMessenger/i
.
test
(
navigator
.
userAgent
))
{
$
.
ajax
({
url
:
'//res.wx.qq.com/open/js/jweixin-1.3.2.js'
,
dataType
:
'script'
,
cache
:
true
,
success
:
function
success
()
{
jsonp
({
url
:
'//m.yohobuy.com/activity/wechat/share?callback=?'
,
data
:
{
url
:
location
.
href
}
}).
then
(
function
(
res
)
{
if
(
window
.
wx
)
{
window
.
wx
.
config
({
debug
:
false
,
appId
:
res
.
appId
,
timestamp
:
res
.
timestamp
,
nonceStr
:
res
.
nonceStr
,
signature
:
res
.
signature
,
jsApiList
:
jsApiList
});
_getShareDataById
().
then
(
function
()
{
window
.
wx
.
ready
(
function
()
{
window
.
wx
.
onMenuShareAppMessage
(
shareData
);
window
.
wx
.
onMenuShareTimeline
(
shareData
);
window
.
wx
.
onMenuShareQQ
(
shareData
);
window
.
wx
.
onMenuShareWeibo
(
shareData
);
window
.
wx
.
onMenuShareQZone
(
shareData
);
});
});
}
});
}
});
}
}
};
/**
* 移动端尝试打开 app
*/
var
channelMap
=
{
'baidu.com'
:
100000000000055
,
'so.com'
:
100000000000049
,
'sogou.com'
:
100000000000053
,
'bing.com'
:
100000000000057
,
'm.sm.cn'
:
100000000000059
,
'google.com'
:
100000000000061
};
var
getMktcBySeo
=
function
getMktcBySeo
()
{
var
mktc
,
rf
=
document
.
referrer
;
for
(
var
domain
in
channelMap
)
{
if
(
rf
.
indexOf
(
domain
)
>
-
1
)
{
mktc
=
channelMap
[
domain
];
break
;
}
}
return
mktc
;
};
var
getAppPath
=
function
getAppPath
()
{
var
qs
=
utils
.
queryString
();
var
ct
=
qs
.
mkt_code
||
qs
.
union_type
||
getMktcBySeo
()
||
'100000000000349'
;
delete
qs
.
openapp
;
// 防止重复打开
var
shareParams
=
qs
.
share_id
?
'"share":"/operations/api/v5/webshare/getShare","shareparam":{"share_id":"'
+
qs
.
share_id
+
'"},'
:
''
,
appPath
=
'yohobuy://yohobuy.com/goapp?ct='
+
ct
+
'&openby:yohobuy={"action":"go.h5",'
+
shareParams
+
'"params":{"islogin":"N","url":"http://feature.yoho.cn'
+
location
.
pathname
+
'","param":'
+
JSON
.
stringify
(
qs
)
+
'}}'
;
return
appPath
;
};
var
openapp
=
{
init
:
function
init
()
{
if
(
utils
.
queryString
().
openapp
)
{
var
u
=
navigator
.
userAgent
.
toLowerCase
();
var
isiOS
=
u
.
indexOf
(
'os'
)
>
-
1
||
u
.
indexOf
(
'iphone'
)
>
-
1
||
u
.
indexOf
(
'mac'
)
>
-
1
||
u
.
indexOf
(
'ipad'
)
>
-
1
;
var
appPath
=
getAppPath
();
if
(
isiOS
)
{
window
.
location
.
href
=
appPath
;
}
else
{
var
ifr
=
document
.
createElement
(
'iframe'
);
ifr
.
src
=
appPath
;
ifr
.
style
.
display
=
'none'
;
document
.
body
.
appendChild
(
ifr
);
}
}
}
};
function
cookie
(
name
)
{
var
re
=
new
RegExp
(
name
+
'=([^;$]*)'
,
'i'
),
matchPattern
=
'$1'
;
return
re
.
test
(
decodeURIComponent
(
document
.
cookie
))
?
RegExp
[
matchPattern
]
:
''
;
}
function
setCookie
(
name
,
value
,
options
)
{
var
expires
=
''
,
path
,
domain
,
secure
,
date
;
if
(
typeof
value
!==
'undefined'
)
{
options
=
options
||
{};
if
(
value
===
null
)
{
value
=
''
;
options
.
expires
=
-
1
;
}
if
(
options
.
expires
&&
(
typeof
options
.
expires
===
'number'
||
options
.
expires
.
toUTCString
))
{
if
(
typeof
options
.
expires
===
'number'
)
{
date
=
new
Date
();
date
.
setTime
(
date
.
getTime
()
+
options
.
expires
*
24
*
60
*
60
*
1000
);
}
else
{
date
=
options
.
expires
;
}
expires
=
'; expires='
+
date
.
toUTCString
();
}
path
=
options
.
path
?
'; path='
+
options
.
path
:
''
;
domain
=
options
.
domain
?
'; domain='
+
options
.
domain
:
''
;
secure
=
options
.
secure
?
'; secure'
:
''
;
document
.
cookie
=
[
name
,
'='
,
encodeURIComponent
(
value
),
expires
,
path
,
domain
,
secure
].
join
(
''
);
}
}
var
cookies
=
{
cookie
:
cookie
,
setCookie
:
setCookie
};
/* global wx */
// 1. 优惠券领取
// 2. YOHO币领取
var
_getCoin
=
function
_getCoin
(
data
)
{
data
.
app
=
utils
.
queryString
();
data
.
app
.
uid
=
data
.
uid
;
jsonp
({
url
:
'//m.yohobuy.com/activity/coin/sendCoin?callback=?'
,
data
:
data
}).
then
(
function
(
res
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
data
.
code
===
200
)
{
utils
.
showCoinTip
({
title
:
'恭喜您,成功领取有货币!'
,
content
:
'特殊情况下到账有延时<br>请耐心等待'
,
close
:
true
,
coin
:
true
,
img
:
res
.
data
.
popupImg
});
}
else
if
(
res
.
data
.
code
===
501
)
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'哎呀,你来的有点早,活动还没开始呢<br/>稍后再来哦'
,
close
:
true
,
img
:
res
.
data
.
popupImg
});
}
else
if
(
res
.
data
.
code
===
502
)
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'抱歉,活动已结束了,下次要快哟~~'
,
close
:
true
,
img
:
res
.
data
.
popupImg
});
}
else
if
(
res
.
data
.
code
===
503
)
{
utils
.
showCoinTip
({
title
:
'已经领取'
,
content
:
'贪心会长胖,你已经领取过了啦~~'
,
close
:
true
,
img
:
res
.
data
.
popupImg
});
}
else
if
(
res
.
data
.
code
===
504
)
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'哎呀,你来晚了,有货币已经领完了,<br/>下次早点来哦'
,
close
:
true
,
img
:
res
.
data
.
popupImg
});
}
else
if
(
res
.
data
.
msg
)
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'抱歉,系统错误,有货君正奋力解决中...请稍后再来'
,
close
:
true
,
img
:
res
.
data
.
popupImg
});
}
}
else
if
(
res
.
message
)
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'抱歉,系统错误,有货君正奋力解决中...请稍后再来'
,
close
:
true
,
img
:
res
.
data
&&
res
.
data
.
popupImg
});
}
},
function
()
{
utils
.
showCoinTip
({
title
:
'领取失败'
,
content
:
'抱歉,系统错误,有货君正奋力解决中...请稍后再来'
,
close
:
true
});
});
};
var
_getCoupon
=
function
_getCoupon
(
data
)
{
data
.
app
=
utils
.
queryString
();
data
.
app
.
uid
=
cookies
.
cookie
(
'app_uid'
)
||
data
.
app
.
uid
;
data
.
app
.
app_version
=
cookies
.
cookie
(
'app_version'
)
||
data
.
app
.
app_version
;
data
.
app
.
client_type
=
cookies
.
cookie
(
'app_client_type'
)
||
data
.
app
.
client_type
;
data
.
app
.
session_key
=
cookies
.
cookie
(
'app_session_key'
)
||
data
.
app
.
session_key
;
jsonp
({
url
:
'//m.yohobuy.com/activity/feature/couponSend?callback=?'
,
data
:
data
}).
then
(
function
(
res
)
{
if
(
res
.
code
===
200
)
{
utils
.
showTip
({
title
:
'领取成功'
,
content
:
'恭喜您,领取成功'
,
close
:
true
});
}
else
if
(
res
.
code
===
401
)
{
utils
.
showTip
({
title
:
'已经领取'
,
content
:
'快去分享给更多<br>喜爱<span class="highlight">潮流</span>的小伙伴吧!'
,
close
:
true
});
}
else
if
(
res
.
message
)
{
utils
.
showTip
({
title
:
'领取失败<br>请刷新重新领取'
,
content
:
res
.
message
+
'<br>如多次领取失败,请联系客服人员<br>带来不便敬请谅解'
,
close
:
false
});
}
},
function
()
{
utils
.
showTip
({
title
:
'领取失败<br>请刷新重新领取'
,
content
:
'如多次领取失败,请联系客服人员<br>带来不便敬请谅解'
,
close
:
false
});
});
};
var
_initCoin
=
function
_initCoin
(
uid
)
{
if
(
uid
)
{
var
cointoken
=
cookies
.
cookie
(
'yoho-coin-token'
);
if
(
cointoken
)
{
_getCoin
({
token
:
cointoken
,
uid
:
uid
});
cookies
.
setCookie
(
'yoho-coin-token'
,
''
);
}
}
$
(
'body'
).
on
(
'click'
,
'.yoho-coin'
,
function
()
{
var
token
=
$
(
this
).
data
(
'token'
);
if
(
user
.
uid
)
{
_getCoin
({
token
:
token
,
uid
:
user
.
uid
});
}
else
{
cookies
.
setCookie
(
'yoho-coin-token'
,
token
);
if
(
window
.
__wxjs_environment
===
'miniprogram'
&&
wx
&&
wx
.
miniProgram
)
{
wx
.
miniProgram
.
navigateTo
({
url
:
'../bindPhoneNumber/bindPhoneNumber?h5back='
+
location
.
href
});
return
;
}
if
(
$
(
'#intimacy-link'
).
length
<=
0
)
{
$
(
'body'
).
append
(
'<a href=\''
+
user
.
noLoginUrl
()
+
'\' style="display:none;" id="intimacy-link"><span class="intimacy-link"></span></a>'
);
}
$
(
'.intimacy-link'
).
click
();
return
;
}
});
};
var
_initCoupon
=
function
_initCoupon
(
uid
)
{
if
(
uid
)
{
var
conpontoken
=
cookies
.
cookie
(
'yoho-conpon-token'
);
if
(
conpontoken
)
{
_getCoupon
({
token
:
conpontoken
,
uid
:
uid
});
cookies
.
setCookie
(
'yoho-conpon-token'
,
''
);
}
}
$
(
'body'
).
on
(
'click'
,
'.yoho-conpon'
,
function
()
{
var
token
=
$
(
this
).
data
(
'token'
);
if
(
user
.
uid
)
{
_getCoupon
({
token
:
token
,
uid
:
user
.
uid
});
}
else
{
cookies
.
setCookie
(
'yoho-conpon-token'
,
token
);
if
(
window
.
__wxjs_environment
===
'miniprogram'
&&
wx
&&
wx
.
miniProgram
)
{
wx
.
miniProgram
.
navigateTo
({
url
:
'../bindPhoneNumber/bindPhoneNumber?h5back='
+
location
.
href
});
return
;
}
if
(
$
(
'#intimacy-link'
).
length
<=
0
)
{
$
(
'body'
).
append
(
'<a href=\''
+
user
.
noLoginUrl
()
+
'\' style="display:none;" id="intimacy-link"><span class="intimacy-link"></span></a>'
);
}
$
(
'.intimacy-link'
).
click
();
return
;
}
});
};
var
promotion
=
{
init
:
function
init
(
uid
)
{
_initCoin
(
uid
);
// 初始化有货币
_initCoupon
(
uid
);
// 初始化优惠券
}
};
var
abTestFlag
=
false
;
// ab测试
var
_replaceData
=
function
_replaceData
(
el
,
cond
,
data
,
wh
,
fp
)
{
if
(
!
data
)
{
return
;
}
el
.
find
(
'.brand-name'
).
html
(
data
.
brand_name
);
el
.
find
(
'.product-detail'
).
attr
(
'href'
,
'//m.yohobuy.com/product/'
+
data
.
product_skn
+
'.html?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":'
+
data
.
product_skn
+
'}}'
);
el
.
find
(
'.product-detail-img'
).
attr
(
'src'
,
utils
.
image
(
data
.
default_images
,
wh
.
w
,
wh
.
h
,
2
,
75
));
el
.
find
(
'.product-name'
).
html
(
data
.
product_name
);
el
.
find
(
'.vip-price-val'
).
html
(
'\xA5'
+
data
.
vip_price
);
el
.
find
(
'.sale-price'
).
html
(
'\xA5'
+
data
.
sales_price
);
if
(
data
.
sales_price
===
data
.
market_price
)
{
el
.
find
(
'.market-price'
).
hide
();
}
else
{
el
.
find
(
'.market-price'
).
html
(
'\xA5'
+
data
.
market_price
).
show
();
}
var
brandDom
=
el
.
find
(
'.product-brand'
);
if
(
brandDom
)
{
if
(
data
.
shop_id
)
{
brandDom
.
attr
(
'href'
,
'//m.yohobuy.com/product/index/brand?domain='
+
data
.
brand_domain
+
'&openby:yohobuy={"action":"go.shop","params":{"shop_id":'
+
data
.
shop_id
+
',"shop_template_type":'
+
(
data
.
shop_template_type
||
"1"
)
+
',"is_red_shop":'
+
(
data
.
is_red_shop
||
1
)
+
'}}'
);
}
else
{
brandDom
.
attr
(
'href'
,
'//m.yohobuy.com/product/index/brand?domain='
+
data
.
brand_domain
+
'&openby:yohobuy={"action":"go.brand","params":{"brand_id":'
+
data
.
brand_id
+
'}}'
);
}
}
// 楼层数据
if
(
fp
)
{
if
(
!
fp
.
I_INDEX
)
fp
.
I_INDEX
=
0
;
fp
.
I_INDEX
++
;
el
.
find
(
'.product-detail'
).
attr
(
'fp'
,
JSON
.
stringify
(
fp
));
if
(
brandDom
)
{
fp
.
I_INDEX
++
;
brandDom
.
attr
(
'fp'
,
JSON
.
stringify
(
fp
));
}
}
var
listDom
=
el
.
find
(
'.list-product'
);
if
(
listDom
)
{
var
sortStr
=
''
,
gender
=
cond
.
gender
?
cond
.
gender
:
'1,3'
,
url
=
'//list.m.yohobuy.com?gender='
+
gender
;
if
(
listDom
.
data
(
'sort'
))
{
sortStr
+=
',"sort":'
+
data
.
small_sort_id
;
url
+=
'&sort='
+
data
.
small_sort_id
;
}
if
(
listDom
.
data
(
'misort'
))
{
sortStr
+=
',"misort":'
+
data
.
middle_sort_id
;
url
+=
'&misort='
+
data
.
middle_sort_id
;
}
if
(
listDom
.
data
(
'msort'
))
{
sortStr
+=
',"msort":'
+
data
.
max_sort_id
;
url
+=
'&msort='
+
data
.
max_sort_id
;
}
url
+=
'&openby:yohobuy={"action":"go.list","params":{"actiontype":1,"gender":'
+
gender
+
sortStr
+
'}}'
;
listDom
.
attr
(
'href'
,
url
);
}
el
.
html
(
el
.
html
());
return
el
;
};
var
_getProductData
=
function
_getProductData
(
dataArr
)
{
if
(
!
dataArr
.
length
)
{
return
;
}
var
data
=
dataArr
.
shift
();
if
(
!
data
||
!
data
.
default_images
)
{
return
_getProductData
(
dataArr
);
}
return
data
;
};
var
_jsonp
=
function
_jsonp
(
el
,
param
,
cond
)
{
var
cloneitem
=
el
.
attr
(
'cloneitem'
);
var
loading
=
el
.
find
(
'.loading'
);
var
goods
=
el
.
find
(
'.feature-product-info'
);
var
rowNum
=
el
.
data
(
'rownum'
);
if
(
!
goods
.
length
)
{
return
;
}
if
(
cond
.
abtest
)
{
// ab测试,访客 和 >=512的uid 显示默认推荐
if
(
!
param
.
uid
||
Number
(
param
.
uid
)
%
1024
>=
512
)
{
if
(
cloneitem
)
{
$
(
goods
[
0
]).
remove
();
}
else
{
goods
.
removeClass
(
'novisible'
);
loading
.
hide
();
}
return
;
}
}
var
imgwh
=
el
.
find
(
'.imgwh'
).
val
()
||
''
;
// 获取图片宽x高
imgwh
=
imgwh
.
split
(
'x'
)
||
[];
var
wh
=
{
w
:
imgwh
[
0
]
||
300
,
h
:
imgwh
[
1
]
||
400
};
// 楼层数据
var
fp
=
el
.
attr
(
'fp'
);
fp
=
fp
?
JSON
.
parse
(
fp
)
:
''
;
jsonp
({
url
:
'//m.yohobuy.com/activity/individuation?callback=?'
,
data
:
$
.
extend
({},
param
,
cond
)
}).
then
(
function
(
res
)
{
if
(
!
res
||
!
res
.
length
)
{
if
(
cloneitem
)
{
$
(
goods
[
0
]).
remove
();
}
else
{
goods
.
removeClass
(
'novisible'
);
loading
.
hide
();
}
return
;
}
// 最后商品数量不足一行,截掉
res
.
length
=
res
.
length
-
res
.
length
%
rowNum
;
if
(
cloneitem
)
{
// 可复制item
var
cnt
=
isNaN
(
Number
(
cloneitem
))
?
res
.
length
:
Number
(
cloneitem
);
for
(
var
indx
=
0
;
indx
<
cnt
;
indx
++
)
{
var
data
=
_getProductData
(
res
);
// 获取商品数据
if
(
indx
===
0
)
{
var
gel
=
$
(
goods
[
0
]);
var
nel
=
_replaceData
(
gel
,
cond
,
data
,
wh
,
fp
);
if
(
nel
)
{
nel
.
removeClass
(
'novisible'
);
}
else
{
gel
.
remove
();
}
}
else
{
var
_nel
=
_replaceData
(
$
(
goods
[
0
]).
clone
(),
cond
,
data
,
wh
,
fp
);
if
(
_nel
)
{
_nel
.
removeClass
(
'novisible'
);
_nel
.
appendTo
(
el
);
}
}
}
}
else
{
for
(
var
i
=
1
;
i
<
res
.
length
;
i
++
)
{
goods
.
last
().
after
(
goods
.
clone
());
}
var
$newGoods
=
el
.
find
(
'.feature-product-info'
);
$newGoods
.
each
(
function
(
indx
,
perProduct
)
{
var
$perProduct
=
$
(
perProduct
);
_replaceData
(
$perProduct
,
cond
,
_getProductData
(
res
),
wh
,
fp
);
});
$newGoods
.
removeClass
(
'novisible'
);
loading
.
hide
();
}
},
function
()
{
if
(
cloneitem
)
{
$
(
goods
[
0
]).
remove
();
}
else
{
goods
.
removeClass
(
'novisible'
);
loading
.
hide
();
}
});
};
var
_abTest
=
function
_abTest
()
{
var
mkt_code
=
user
.
getMktCode
();
// cover覆盖mkt_code
utils
.
sParamByIframe
(
'callback=jQueryMktCode&cover=1&mkt_code='
+
mkt_code
+
'&expires='
+
7
*
24
*
60
*
60
*
1000
);
// 上报曝光事件
var
actionUrl
=
[];
$
(
'a'
).
each
(
function
()
{
var
href
=
$
(
this
).
attr
(
'href'
);
if
(
href
&&
!
/^#.*$/
.
test
(
href
)
&&
!
/^javascript.*$/i
.
test
(
href
))
{
actionUrl
.
push
(
href
);
}
});
var
cnt
=
0
;
var
timer
=
setInterval
(
function
()
{
cnt
++
;
if
(
cnt
>
3
)
{
clearInterval
(
timer
);
return
;
}
if
(
window
.
_yas
&&
window
.
_yas
.
sendAppLogs
&&
window
.
appBaseLogs
)
{
clearInterval
(
timer
);
window
.
_yas
.
sendAppLogs
({
appop
:
'YB_H5_PAGE_AB_OPEN_L'
,
param
:
JSON
.
stringify
({
C_ID
:
utils
.
queryString
().
yh_channel
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
ACTION_URL
:
actionUrl
,
CROWD_CODE
:
mkt_code
+
''
})
},
true
);
$
(
'a'
).
click
(
function
()
{
var
furl
=
$
(
this
).
attr
(
'href'
);
if
(
furl
&&
!
/^#.*$/
.
test
(
furl
)
&&
!
/^javascript.*$/i
.
test
(
furl
))
{
window
.
_yas
.
sendAppLogs
({
appop
:
'YB_H5_PAGE_AB_FLR_C'
,
param
:
JSON
.
stringify
({
C_ID
:
utils
.
queryString
().
yh_channel
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
F_URL
:
furl
,
CROWD_CODE
:
mkt_code
+
''
})
},
true
);
}
});
}
},
1000
);
};
var
_getProduct
=
function
_getProduct
(
param
)
{
$
(
'.product-source'
).
each
(
function
(
i
,
el
)
{
el
=
$
(
el
);
var
cond
=
el
.
attr
(
'condition'
);
if
(
!
cond
)
{
return
;
}
cond
=
JSON
.
parse
(
cond
);
var
yh_channel
=
utils
.
queryString
().
yh_channel
;
if
(
cond
.
abtest
)
{
abTestFlag
=
true
;
}
if
(
yh_channel
)
{
cond
.
yh_channel
=
yh_channel
;
}
if
(
i
>
3
)
{
setTimeout
(
function
()
{
_jsonp
(
el
,
param
,
cond
);
},
300
);
}
else
{
_jsonp
(
el
,
param
,
cond
);
}
});
abTestFlag
&&
_abTest
();
};
var
individuation
=
{
init
:
function
init
(
uid
)
{
if
(
!
uid
&&
utils
.
isApp
())
{
// document.addEventListener('deviceready', function() {
// window.yohoInterface.triggerEvent(function(data) {
// // 获取个性话数据
// _getProduct({
// uid: data.uid,
// udid: data.udid
// });
// }, function() {}, {
// method: 'get.analyticAppData'
// });
// }, false);
_getProduct
({
uid
:
''
,
udid
:
utils
.
queryString
().
udid
||
''
});
}
else
{
// 获取个性话数据
_getProduct
({
uid
:
uid
,
udid
:
cookies
.
cookie
(
'_yasvd'
)
});
}
}
};
// app.js
$
(
function
()
{
openapp
.
init
();
user
.
init
().
then
(
function
(
uid
)
{
individuation
.
init
(
uid
);
// 个性化推荐
promotion
.
init
(
uid
);
// 促销
user
.
auth
();
// 权限验证
share
.
init
();
// 分享
utils
.
init
();
});
});
var
jssdk
=
{
auth
:
user
.
auth
,
favout
:
user
.
favout
,
getMktCode
:
function
getMktCode
()
{
return
user
.
getMktCode
();
},
getUid
:
function
getUid
()
{
return
user
.
uid
;
}
};
var
_typeof
=
typeof
Symbol
===
"function"
&&
typeof
Symbol
.
iterator
===
"symbol"
?
function
(
obj
)
{
return
typeof
obj
;
}
:
function
(
obj
)
{
return
obj
&&
typeof
Symbol
===
"function"
&&
obj
.
constructor
===
Symbol
&&
obj
!==
Symbol
.
prototype
?
"symbol"
:
typeof
obj
;
};
(
function
(
factory
)
{
/* eslint-disable */
if
((
typeof
module
===
'undefined'
?
'undefined'
:
_typeof
(
module
))
===
'object'
&&
_typeof
(
module
.
exports
)
===
'object'
)
{
module
.
exports
=
factory
();
}
else
if
(
typeof
define
===
'function'
&&
define
.
amd
)
{
define
([],
factory
);
}
else
{
window
.
_jssdk
=
factory
();
}
/* eslint-disable */
})(
function
()
{
return
jssdk
;
});
}(
jQuery
));
!
function
(
e
){
"use strict"
;
function
t
(
e
,
t
){
if
(
"undefined"
==
typeof
document
)
return
t
;
e
=
e
||
""
;
var
i
=
document
.
head
||
document
.
getElementsByTagName
(
"head"
)[
0
],
n
=
document
.
createElement
(
"style"
);
return
n
.
type
=
"text/css"
,
i
.
appendChild
(
n
),
n
.
styleSheet
?
n
.
styleSheet
.
cssText
=
e
:
n
.
appendChild
(
document
.
createTextNode
(
e
)),
t
}
function
i
(){}
function
n
(
e
){
s
=
[
e
]}
function
o
(
e
,
t
,
i
){
return
e
&&
e
.
apply
&&
e
.
apply
(
t
.
context
||
t
,
i
)}
function
a
(
e
){
return
/
\?
/
.
test
(
e
)?
"&"
:
"?"
}
function
r
(
t
){
function
r
(
e
){
Y
++||
(
H
(),
$
&&
(
T
[
W
]
=
{
s
:[
e
]}),
R
&&
(
e
=
R
.
apply
(
t
,[
e
])),
o
(
P
,
t
,[
e
,
_
,
t
]),
o
(
L
,
t
,[
t
,
_
]))}
function
c
(
e
){
Y
++||
(
H
(),
$
&&
e
!=
S
&&
(
T
[
W
]
=
e
),
o
(
B
,
t
,[
t
,
e
]),
o
(
L
,
t
,[
t
,
e
]))}
t
=
e
.
extend
({},
j
,
t
);
var
d
,
D
,
E
,
U
,
M
,
P
=
t
.
success
,
B
=
t
.
error
,
L
=
t
.
complete
,
R
=
t
.
dataFilter
,
z
=
t
.
callbackParameter
,
Q
=
t
.
callback
,
J
=
t
.
cache
,
$
=
t
.
pageCache
,
G
=
t
.
charset
,
W
=
t
.
url
,
F
=
t
.
data
,
X
=
t
.
timeout
,
Y
=
0
,
H
=
i
;
return
I
&&
I
(
function
(
e
){
e
.
done
(
P
).
fail
(
B
),
P
=
e
.
resolve
,
B
=
e
.
reject
}).
promise
(
t
),
t
.
abort
=
function
(){
!
Y
++&&
H
()},
!
1
===
o
(
t
.
beforeSend
,
t
,[
t
])
||
Y
?
t
:(
W
=
W
||
l
,
F
=
F
?
"string"
==
typeof
F
?
F
:
e
.
param
(
F
,
t
.
traditional
):
l
,
W
+=
F
?
a
(
W
)
+
F
:
l
,
z
&&
(
W
+=
a
(
W
)
+
encodeURIComponent
(
z
)
+
"=?"
),
!
J
&&!
$
&&
(
W
+=
a
(
W
)
+
"_"
+
(
new
Date
).
getTime
()
+
"="
),
W
=
W
.
replace
(
/=
\?(
&|$
)
/
,
"="
+
Q
+
"$1"
),
$
&&
(
d
=
T
[
W
])?
d
.
s
?
r
(
d
.
s
[
0
]):
c
(
d
):(
C
[
Q
]
=
n
,
E
=
e
(
k
)[
0
],
E
.
id
=
m
+
A
++
,
G
&&
(
E
[
p
]
=
G
),
O
&&
O
.
version
()
<
11.6
?(
U
=
e
(
k
)[
0
]).
text
=
"document.getElementById('"
+
E
.
id
+
"')."
+
y
+
"()"
:
E
[
u
]
=
u
,
q
&&
(
E
.
htmlFor
=
E
.
id
,
E
.
event
=
g
),
E
[
v
]
=
E
[
y
]
=
E
[
b
]
=
function
(
e
){
if
(
!
E
[
w
]
||!
/i/
.
test
(
E
[
w
])){
try
{
E
[
g
]
&&
E
[
g
]()}
catch
(
e
){}
e
=
s
,
s
=
0
,
e
?
r
(
e
[
0
]):
c
(
f
)}},
E
.
src
=
W
,
H
=
function
(
e
){
M
&&
clearTimeout
(
M
),
E
[
b
]
=
E
[
v
]
=
E
[
y
]
=
null
,
N
[
x
](
E
),
U
&&
N
[
x
](
U
)},
N
[
h
](
E
,
D
=
N
.
firstChild
),
U
&&
N
[
h
](
U
,
D
),
M
=
X
>
0
&&
setTimeout
(
function
(){
c
(
S
)},
X
)),
t
)}
function
c
(
e
){
return
new
RegExp
(
e
+
"=([^;$]*)"
,
"i"
).
test
(
decodeURIComponent
(
document
.
cookie
))?
RegExp
.
$1
:
""
}
function
d
(
e
,
t
,
i
){
var
n
,
o
,
a
,
r
,
c
=
""
;
void
0
!==
t
&&
(
i
=
i
||
{},
null
===
t
&&
(
t
=
""
,
i
.
expires
=-
1
),
i
.
expires
&&
(
"number"
==
typeof
i
.
expires
||
i
.
expires
.
toUTCString
)
&&
(
"number"
==
typeof
i
.
expires
?(
r
=
new
Date
,
r
.
setTime
(
r
.
getTime
()
+
24
*
i
.
expires
*
60
*
60
*
1
e3
)):
r
=
i
.
expires
,
c
=
"; expires="
+
r
.
toUTCString
()),
n
=
i
.
path
?
"; path="
+
i
.
path
:
""
,
o
=
i
.
domain
?
"; domain="
+
i
.
domain
:
""
,
a
=
i
.
secure
?
"; secure"
:
""
,
document
.
cookie
=
[
e
,
"="
,
encodeURIComponent
(
t
),
c
,
n
,
o
,
a
].
join
(
""
))}
e
=
"default"
in
e
?
e
.
default
:
e
;
var
s
,
u
=
"async"
,
p
=
"charset"
,
l
=
""
,
f
=
"error"
,
h
=
"insertBefore"
,
m
=
"_jqjsp"
,
g
=
"onclick"
,
y
=
"on"
+
f
,
v
=
"onload"
,
b
=
"onreadystatechange"
,
w
=
"readyState"
,
x
=
"removeChild"
,
k
=
"<script>"
,
_
=
"success"
,
S
=
"timeout"
,
C
=
window
,
I
=
e
.
Deferred
,
N
=
e
(
"head"
)[
0
]
||
document
.
documentElement
,
T
=
{},
A
=
0
,
j
=
{
callback
:
m
,
url
:
location
.
href
},
O
=
C
.
opera
,
q
=!!
e
(
"<div>"
).
html
(
"\x3c!--[if IE]><i><![endif]--\x3e"
).
find
(
"i"
).
length
;
r
.
setup
=
function
(
t
){
e
.
extend
(
j
,
t
)},
e
.
jsonp
=
r
,
t
(
".featuretip.tip-wrap{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.5)}.featuretip .tip{position:fixed;left:50%;top:50%;margin-left:-140px;margin-top:-140px;width:280px;background:#fff;border-top:40px solid #000;text-align:center;line-height:1.25}.featuretip .tip .title{margin:20px auto;font-size:24px;font-weight:700;text-align:center}.featuretip .tip .highlight{font-size:18px}.featuretip .tip .content{font-size:16px;color:#444;text-align:center}.featuretip .tip .button{display:block;margin:20px auto;width:150px;height:30px;font-size:14px;line-height:30px;text-align:center;color:#fff;background:#000;text-decoration:none}"
,
void
0
),
t
(
".feature-coin.tip-wrap{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.5)}.feature-coin .tip{position:fixed;left:50%;top:50%;margin-left:-140px;margin-top:-140px;width:280px;background:#fff;text-align:center;line-height:1.25;background-repeat:no-repeat}.feature-coin .tip .tip-close{position:absolute;right:0;top:0;width:25px;height:25px;line-height:25px;text-align:center;font-size:16px;color:#fff;background:#000;cursor:pointer}.feature-coin .tip .title{margin:21px auto;font-size:22px;font-weight:700;text-align:center}.feature-coin .tip .highlight{font-size:18px}.feature-coin .tip .content{padding:4px;font-size:16px;color:#444;text-align:center;height:48px;overflow:hidden}.feature-coin .bottom-button{text-align:center}.feature-coin .tip .button,.feature-coin .tip .coin{display:inline-block;margin:20px auto;width:116px;height:26px;font-size:14px;line-height:26px;text-align:center;color:#fff;background:#000;text-decoration:none;border:2px solid #000}.feature-coin .tip .coin{color:#000;background:#fff}"
,
void
0
);
var
D
=
{
Android
:
function
(){
return
!!
navigator
.
userAgent
.
match
(
/Android/i
)},
BlackBerry
:
function
(){
return
!!
navigator
.
userAgent
.
match
(
/BlackBerry/i
)},
iOS
:
function
(){
return
!!
navigator
.
userAgent
.
match
(
/iPhone|iPad|iPod/i
)},
Windows
:
function
(){
return
!!
navigator
.
userAgent
.
match
(
/IEMobile/i
)},
any
:
function
(){
return
D
.
Android
()
||
D
.
BlackBerry
()
||
D
.
iOS
()
||
D
.
Windows
()}},
E
=
D
.
any
()?
"//m.yohobuy.com/home/mycurrency"
:
"//www.yohobuy.com/home/currency"
,
U
=
e
(
'<div class="featuretip tip-wrap"><div class="tip"><div class="title"></div><div class="content"></div><a class="button" href="">返回</a></div></div>'
),
M
=
e
(
'<div class="feature-coin tip-wrap"><div class="tip"><div class="tip-close">×</div><div class="title"></div><div class="content"></div><div class="bottom-button"><a class="button" href="">去逛逛</a><a class="coin" href=\''
+
E
+
'?openby:yohobuy={"action":"go.mine"}\'>查看有货币</a></div></div></div>'
),
P
=
function
(){
if
(
!
window
.
_jssdkQS
){
var
t
=
{},
i
=
void
0
,
n
=
void
0
,
o
=
window
.
location
.
search
.
slice
(
1
).
split
(
"&"
);
for
(
n
=
0
;
n
<
o
.
length
;
n
++
)
i
=
o
[
n
].
split
(
"="
),
t
[
i
[
0
]]
=
i
[
1
];
window
.
_jssdkQS
=
t
}
return
e
.
extend
({},
window
.
_jssdkQS
)},
B
=
function
(){
var
t
=
P
(),
i
=
[],
n
=
"?"
;
delete
t
.
uid
,
delete
t
.
app_version
,
delete
t
.
client_type
,
delete
t
.
session_key
,
delete
t
.
client_secret
;
for
(
var
o
in
t
)
i
.
push
(
o
+
"="
+
t
[
o
]);
t
.
expires
||
i
.
push
(
"expires="
+
6048
e5
),
i
.
push
(
"callback=jQueryMktCode"
),
n
+=
i
.
join
(
"&"
),
e
.
getScript
(
"//m.yohobuy.com/activity/wechat/1111"
+
n
,
function
(){})},
L
=
function
(){
var
t
=
e
(
"body"
);
t
.
on
(
"click"
,
".feature-coin .close,.feature-coin .tip-close"
,
function
(
e
){
M
.
fadeOut
(),
e
.
preventDefault
()}),
t
.
on
(
"click"
,
".feature-coin.tip-wrap"
,
function
(
e
){
"feature-coin tip-wrap"
===
e
.
target
.
className
&&
(
M
.
fadeOut
(),
e
.
preventDefault
())}),
t
.
on
(
"click"
,
".featuretip .close"
,
function
(
e
){
U
.
fadeOut
(),
e
.
preventDefault
()}),
t
.
on
(
"click"
,
".featuretip .refresh"
,
function
(){
location
.
reload
()}),
t
.
on
(
"click"
,
".featuretip.tip-wrap"
,
function
(
e
){
"featuretip tip-wrap"
===
e
.
target
.
className
&&
(
U
.
fadeOut
(),
e
.
preventDefault
())})},
R
=
{
queryString
:
P
,
init
:
function
(){
B
(),
L
()},
isApp
:
function
(){
var
e
=
P
();
return
!
(
!
e
.
app_version
&&
(
"app"
!==
e
.
openrefer
||!
e
.
uid
))},
image
:
function
(
e
,
t
,
i
,
n
,
o
){
return
n
=
isNaN
(
Number
(
n
))?
2
:
n
,
e
=
e
||
""
,
e
=
e
.
replace
(
/{width}/g
,
t
).
replace
(
/{height}/g
,
i
).
replace
(
/{mode}/g
,
n
),
e
.
indexOf
(
"imageView2"
)
>
0
&&
(
o
=
o
||
90
,
e
+=
"/q/"
+
o
),
e
.
replace
(
"quality/80"
,
"quality/60"
).
replace
(
"http:"
,
""
)},
sParamByIframe
:
function
(
t
){
e
.
getScript
(
"//m.yohobuy.com/activity/wechat/1111"
+
t
,
function
(){})},
showTip
:
function
(
t
){
t
=
t
||
{
title
:
""
,
content
:
""
,
close
:
!
0
},
U
.
find
(
".title"
).
html
(
t
.
title
),
U
.
find
(
".content"
).
html
(
t
.
content
),
t
.
close
?
U
.
find
(
".button"
).
addClass
(
"close"
):
U
.
find
(
".button"
).
addClass
(
"refresh"
).
html
(
"刷新"
),
e
(
"body"
).
append
(
U
),
U
.
show
()},
showCoinTip
:
function
(
t
){
t
=
t
||
{
title
:
""
,
content
:
""
,
close
:
!
0
},
M
.
find
(
".title"
).
html
(
t
.
title
),
M
.
find
(
".content"
).
html
(
t
.
content
),
t
.
close
&&
M
.
find
(
".button"
).
addClass
(
"close"
),
t
.
coin
?
M
.
find
(
".coin"
).
css
(
"display"
,
"inline-block"
):
M
.
find
(
".coin"
).
hide
(),
t
.
img
&&
M
.
find
(
".tip"
).
css
(
"background-image"
,
"url("
+
t
.
img
+
")"
),
e
(
"body"
).
append
(
M
),
M
.
show
()}},
z
=
function
(){
var
e
=
location
.
href
.
split
(
"?"
)[
0
];
return
"//m.yohobuy.com/signin.html?refer="
+
encodeURIComponent
(
location
.
href
)
+
'&openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"'
+
e
.
replace
(
/
\/
/g
,
"\\/"
)
+
'","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}'
},
Q
=
{
uid
:
""
,
noLoginUrl
:
z
,
init
:
function
(){
var
t
=
this
;
return
r
({
url
:
"//m.yohobuy.com/passport/login/user?callback=?"
}).
then
(
function
(
i
){
return
200
===
i
.
code
&&
(
t
.
uid
=
Number
(
i
.
data
)
||
0
),
!
t
.
uid
&&
R
.
isApp
()
&&
(
t
.
uid
=
Number
(
R
.
queryString
().
uid
)
||
0
),
e
.
Deferred
().
resolve
(
t
.
uid
)},
function
(){
return
R
.
isApp
()
&&
(
t
.
uid
=
Number
(
R
.
queryString
().
uid
)
||
0
),
e
.
Deferred
().
resolve
(
t
.
uid
)})},
auth
:
function
(){
if
(
!
this
.
uid
){
var
t
=
z
();
e
(
"a.auth"
).
attr
(
"href"
,
t
)}},
favout
:
function
(
e
){
e
&&
this
.
uid
&&
r
({
url
:
"//service.yoho.cn/activity/favorite/addFavorite?productSkn="
+
e
+
"&uid="
+
this
.
uid
+
"&callback=?"
}).
then
(
function
(
e
){
200
===
e
.
code
?
R
.
showTip
({
content
:
"恭喜您,收藏成功"
,
close
:
!
0
}):
R
.
showTip
({
content
:
e
.
message
,
close
:
!
0
})},
function
(){
R
.
showTip
({
title
:
"收藏失败<br>请刷新重新领取"
,
content
:
"如多次收藏失败,请联系客服人员<br>带来不便敬请谅解"
,
close
:
!
1
})})},
getMktCode
:
function
(){
return
this
.
uid
?
Number
(
this
.
uid
)
%
1024
>=
512
?
0x5af3107a40c3
:
0x5af3107a40c1
:
0x5af3107a40c5
}},
J
=
[
"checkJsApi"
,
"onMenuShareTimeline"
,
"onMenuShareAppMessage"
,
"onMenuShareQQ"
,
"onMenuShareWeibo"
,
"onMenuShareQZone"
],
$
=
{
title
:
document
.
title
,
link
:
location
.
href
,
desc
:
"YOHO!BUY"
,
imgUrl
:
"http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png"
},
G
=
function
(){
var
t
=
R
.
queryString
().
share_id
;
if
(
t
)
return
r
({
url
:
"//m.yohobuy.com/activity/share?callback=?"
,
data
:{
shareId
:
t
}}).
then
(
function
(
t
){
return
t
&&
200
===
t
.
code
&&
t
.
data
&&
(
$
.
title
=
t
.
data
.
title
,
$
.
link
=
t
.
data
.
link
||
location
.
href
,
$
.
desc
=
t
.
data
.
content
||
t
.
data
.
title
,
$
.
imgUrl
=
t
.
data
.
pic
),
e
.
Deferred
().
resolve
()},
function
(){
return
e
.
Deferred
().
resolve
()});
var
i
=
e
(
"#shareTitle"
).
val
(),
n
=
e
(
"#shareImg"
).
val
(),
o
=
e
(
"#shareDesc"
).
val
(),
a
=
e
(
"#shareLink"
).
val
();
return
$
.
title
=
i
||
$
.
title
,
$
.
imgUrl
=
n
||
$
.
imgUrl
,
$
.
desc
=
o
||
$
.
desc
,
$
.
link
=
a
||
$
.
link
,
e
.
Deferred
().
resolve
()},
W
=
{
init
:
function
(){
/QQ/i
.
test
(
navigator
.
userAgent
)
&&
e
.
ajax
({
url
:
"//qzonestyle.gtimg.cn/qzone/qzact/common/share/share.js"
,
dataType
:
"script"
,
cache
:
!
0
,
success
:
function
(){
G
().
then
(
function
(){
window
.
setShareInfo
&&
window
.
setShareInfo
({
title
:
$
.
title
,
summary
:
$
.
desc
,
pic
:
$
.
imgUrl
,
url
:
$
.
link
})})}}),
/MicroMessenger/i
.
test
(
navigator
.
userAgent
)
&&
e
.
ajax
({
url
:
"//res.wx.qq.com/open/js/jweixin-1.3.2.js"
,
dataType
:
"script"
,
cache
:
!
0
,
success
:
function
(){
r
({
url
:
"//m.yohobuy.com/activity/wechat/share?callback=?"
,
data
:{
url
:
location
.
href
}}).
then
(
function
(
e
){
window
.
wx
&&
(
window
.
wx
.
config
({
debug
:
!
1
,
appId
:
e
.
appId
,
timestamp
:
e
.
timestamp
,
nonceStr
:
e
.
nonceStr
,
signature
:
e
.
signature
,
jsApiList
:
J
}),
G
().
then
(
function
(){
window
.
wx
.
ready
(
function
(){
window
.
wx
.
onMenuShareAppMessage
(
$
),
window
.
wx
.
onMenuShareTimeline
(
$
),
window
.
wx
.
onMenuShareQQ
(
$
),
window
.
wx
.
onMenuShareWeibo
(
$
),
window
.
wx
.
onMenuShareQZone
(
$
)})}))})}})}},
F
=
{
"baidu.com"
:
0x5af3107a4037
,
"so.com"
:
0x5af3107a4031
,
"sogou.com"
:
0x5af3107a4035
,
"bing.com"
:
0x5af3107a4039
,
"m.sm.cn"
:
0x5af3107a403b
,
"google.com"
:
0x5af3107a403d
},
X
=
function
(){
var
e
,
t
=
document
.
referrer
;
for
(
var
i
in
F
)
if
(
t
.
indexOf
(
i
)
>-
1
){
e
=
F
[
i
];
break
}
return
e
},
Y
=
function
(){
var
e
=
R
.
queryString
(),
t
=
e
.
mkt_code
||
e
.
union_type
||
X
()
||
"100000000000349"
;
return
delete
e
.
openapp
,
"yohobuy://yohobuy.com/goapp?ct="
+
t
+
'&openby:yohobuy={"action":"go.h5",'
+
(
e
.
share_id
?
'"share":"/operations/api/v5/webshare/getShare","shareparam":{"share_id":"'
+
e
.
share_id
+
'"},'
:
""
)
+
'"params":{"islogin":"N","url":"http://feature.yoho.cn'
+
location
.
pathname
+
'","param":'
+
JSON
.
stringify
(
e
)
+
"}}"
},
H
=
{
init
:
function
(){
if
(
R
.
queryString
().
openapp
){
var
e
=
navigator
.
userAgent
.
toLowerCase
(),
t
=
e
.
indexOf
(
"os"
)
>-
1
||
e
.
indexOf
(
"iphone"
)
>-
1
||
e
.
indexOf
(
"mac"
)
>-
1
||
e
.
indexOf
(
"ipad"
)
>-
1
,
i
=
Y
();
if
(
t
)
window
.
location
.
href
=
i
;
else
{
var
n
=
document
.
createElement
(
"iframe"
);
n
.
src
=
i
,
n
.
style
.
display
=
"none"
,
document
.
body
.
appendChild
(
n
)}}}},
Z
=
{
cookie
:
c
,
setCookie
:
d
},
V
=
function
(
e
){
e
.
app
=
R
.
queryString
(),
e
.
app
.
uid
=
e
.
uid
,
r
({
url
:
"//m.yohobuy.com/activity/coin/sendCoin?callback=?"
,
data
:
e
}).
then
(
function
(
e
){
200
===
e
.
code
&&
e
.
data
?
200
===
e
.
data
.
code
?
R
.
showCoinTip
({
title
:
"恭喜您,成功领取有货币!"
,
content
:
"特殊情况下到账有延时<br>请耐心等待"
,
close
:
!
0
,
coin
:
!
0
,
img
:
e
.
data
.
popupImg
}):
501
===
e
.
data
.
code
?
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"哎呀,你来的有点早,活动还没开始呢<br/>稍后再来哦"
,
close
:
!
0
,
img
:
e
.
data
.
popupImg
}):
502
===
e
.
data
.
code
?
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"抱歉,活动已结束了,下次要快哟~~"
,
close
:
!
0
,
img
:
e
.
data
.
popupImg
}):
503
===
e
.
data
.
code
?
R
.
showCoinTip
({
title
:
"已经领取"
,
content
:
"贪心会长胖,你已经领取过了啦~~"
,
close
:
!
0
,
img
:
e
.
data
.
popupImg
}):
504
===
e
.
data
.
code
?
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"哎呀,你来晚了,有货币已经领完了,<br/>下次早点来哦"
,
close
:
!
0
,
img
:
e
.
data
.
popupImg
}):
e
.
data
.
msg
&&
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"抱歉,系统错误,有货君正奋力解决中...请稍后再来"
,
close
:
!
0
,
img
:
e
.
data
.
popupImg
}):
e
.
message
&&
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"抱歉,系统错误,有货君正奋力解决中...请稍后再来"
,
close
:
!
0
,
img
:
e
.
data
&&
e
.
data
.
popupImg
})},
function
(){
R
.
showCoinTip
({
title
:
"领取失败"
,
content
:
"抱歉,系统错误,有货君正奋力解决中...请稍后再来"
,
close
:
!
0
})})},
K
=
function
(
e
){
e
.
app
=
R
.
queryString
(),
e
.
app
.
uid
=
e
.
app
.
uid
||
Z
.
cookie
(
"app_uid"
),
e
.
app
.
app_version
=
e
.
app
.
app_version
||
Z
.
cookie
(
"app_version"
),
e
.
app
.
client_type
=
e
.
app
.
client_type
||
Z
.
cookie
(
"app_client_type"
),
e
.
app
.
session_key
=
e
.
app
.
session_key
||
Z
.
cookie
(
"app_session_key"
),
r
({
url
:
"//m.yohobuy.com/activity/feature/couponSend?callback=?"
,
data
:
e
}).
then
(
function
(
e
){
200
===
e
.
code
?
R
.
showTip
({
title
:
"领取成功"
,
content
:
"恭喜您,领取成功"
,
close
:
!
0
}):
401
===
e
.
code
?
R
.
showTip
({
title
:
"已经领取"
,
content
:
'快去分享给更多<br>喜爱<span class="highlight">潮流</span>的小伙伴吧!'
,
close
:
!
0
}):
e
.
message
&&
R
.
showTip
({
title
:
"领取失败<br>请刷新重新领取"
,
content
:
e
.
message
+
"<br>如多次领取失败,请联系客服人员<br>带来不便敬请谅解"
,
close
:
!
1
})},
function
(){
R
.
showTip
({
title
:
"领取失败<br>请刷新重新领取"
,
content
:
"如多次领取失败,请联系客服人员<br>带来不便敬请谅解"
,
close
:
!
1
})})},
ee
=
function
(
t
){
if
(
t
){
var
i
=
Z
.
cookie
(
"yoho-coin-token"
);
i
&&
(
V
({
token
:
i
,
uid
:
t
}),
Z
.
setCookie
(
"yoho-coin-token"
,
""
))}
e
(
"body"
).
on
(
"click"
,
".yoho-coin"
,
function
(){
var
t
=
e
(
this
).
data
(
"token"
);
if
(
!
Q
.
uid
)
return
Z
.
setCookie
(
"yoho-coin-token"
,
t
),
"miniprogram"
===
window
.
__wxjs_environment
&&
"undefined"
!=
typeof
wx
&&
wx
.
miniProgram
?
void
wx
.
miniProgram
.
navigateTo
({
url
:
"../bindPhoneNumber/bindPhoneNumber?h5back="
+
location
.
href
}):(
e
(
"#intimacy-link"
).
length
<=
0
&&
e
(
"body"
).
append
(
"<a href='"
+
Q
.
noLoginUrl
()
+
'\' style="display:none;" id="intimacy-link"><span class="intimacy-link"></span></a>'
),
void
e
(
".intimacy-link"
).
click
());
V
({
token
:
t
,
uid
:
Q
.
uid
})})},
te
=
function
(
t
){
if
(
t
){
var
i
=
Z
.
cookie
(
"yoho-conpon-token"
);
i
&&
(
K
({
token
:
i
,
uid
:
t
}),
Z
.
setCookie
(
"yoho-conpon-token"
,
""
))}
e
(
"body"
).
on
(
"click"
,
".yoho-conpon"
,
function
(){
var
t
=
e
(
this
).
data
(
"token"
);
if
(
!
Q
.
uid
)
return
Z
.
setCookie
(
"yoho-conpon-token"
,
t
),
"miniprogram"
===
window
.
__wxjs_environment
&&
"undefined"
!=
typeof
wx
&&
wx
.
miniProgram
?
void
wx
.
miniProgram
.
navigateTo
({
url
:
"../bindPhoneNumber/bindPhoneNumber?h5back="
+
location
.
href
}):(
e
(
"#intimacy-link"
).
length
<=
0
&&
e
(
"body"
).
append
(
"<a href='"
+
Q
.
noLoginUrl
()
+
'\' style="display:none;" id="intimacy-link"><span class="intimacy-link"></span></a>'
),
void
e
(
".intimacy-link"
).
click
());
K
({
token
:
t
,
uid
:
Q
.
uid
})})},
ie
=
{
init
:
function
(
e
){
ee
(
e
),
te
(
e
)}},
ne
=!
1
,
oe
=
function
(
e
,
t
,
i
,
n
,
o
){
if
(
i
){
e
.
find
(
".brand-name"
).
html
(
i
.
brand_name
),
e
.
find
(
".product-detail"
).
attr
(
"href"
,
"//m.yohobuy.com/product/"
+
i
.
product_skn
+
'.html?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":'
+
i
.
product_skn
+
"}}"
),
e
.
find
(
".product-detail-img"
).
attr
(
"src"
,
R
.
image
(
i
.
default_images
,
n
.
w
,
n
.
h
,
2
,
75
)),
e
.
find
(
".product-name"
).
html
(
i
.
product_name
),
e
.
find
(
".vip-price-val"
).
html
(
"¥"
+
i
.
vip_price
),
e
.
find
(
".sale-price"
).
html
(
"¥"
+
i
.
sales_price
),
i
.
sales_price
===
i
.
market_price
?
e
.
find
(
".market-price"
).
hide
():
e
.
find
(
".market-price"
).
html
(
"¥"
+
i
.
market_price
).
show
();
var
a
=
e
.
find
(
".product-brand"
);
a
&&
(
i
.
shop_id
?
a
.
attr
(
"href"
,
"//m.yohobuy.com/product/index/brand?domain="
+
i
.
brand_domain
+
'&openby:yohobuy={"action":"go.shop","params":{"shop_id":'
+
i
.
shop_id
+
',"shop_template_type":'
+
(
i
.
shop_template_type
||
"1"
)
+
',"is_red_shop":'
+
(
i
.
is_red_shop
||
1
)
+
"}}"
):
a
.
attr
(
"href"
,
"//m.yohobuy.com/product/index/brand?domain="
+
i
.
brand_domain
+
'&openby:yohobuy={"action":"go.brand","params":{"brand_id":'
+
i
.
brand_id
+
"}}"
)),
o
&&
(
o
.
I_INDEX
||
(
o
.
I_INDEX
=
0
),
o
.
I_INDEX
++
,
e
.
find
(
".product-detail"
).
attr
(
"fp"
,
JSON
.
stringify
(
o
)),
a
&&
(
o
.
I_INDEX
++
,
a
.
attr
(
"fp"
,
JSON
.
stringify
(
o
))));
var
r
=
e
.
find
(
".list-product"
);
if
(
r
){
var
c
=
""
,
d
=
t
.
gender
?
t
.
gender
:
"1,3"
,
s
=
"//list.m.yohobuy.com?gender="
+
d
;
r
.
data
(
"sort"
)
&&
(
c
+=
',"sort":'
+
i
.
small_sort_id
,
s
+=
"&sort="
+
i
.
small_sort_id
),
r
.
data
(
"misort"
)
&&
(
c
+=
',"misort":'
+
i
.
middle_sort_id
,
s
+=
"&misort="
+
i
.
middle_sort_id
),
r
.
data
(
"msort"
)
&&
(
c
+=
',"msort":'
+
i
.
max_sort_id
,
s
+=
"&msort="
+
i
.
max_sort_id
),
s
+=
'&openby:yohobuy={"action":"go.list","params":{"actiontype":1,"gender":'
+
d
+
c
+
"}}"
,
r
.
attr
(
"href"
,
s
)}
return
e
.
html
(
e
.
html
()),
e
}},
ae
=
function
e
(
t
){
if
(
t
.
length
){
var
i
=
t
.
shift
();
return
i
&&
i
.
default_images
?
i
:
e
(
t
)}},
re
=
function
(
t
,
i
,
n
){
var
o
=
t
.
attr
(
"cloneitem"
),
a
=
t
.
find
(
".loading"
),
c
=
t
.
find
(
".feature-product-info"
),
d
=
t
.
data
(
"rownum"
);
if
(
c
.
length
){
if
(
n
.
abtest
&&
(
!
i
.
uid
||
Number
(
i
.
uid
)
%
1024
>=
512
))
return
void
(
o
?
e
(
c
[
0
]).
remove
():(
c
.
removeClass
(
"novisible"
),
a
.
hide
()));
var
s
=
t
.
find
(
".imgwh"
).
val
()
||
""
;
s
=
s
.
split
(
"x"
)
||
[];
var
u
=
{
w
:
s
[
0
]
||
300
,
h
:
s
[
1
]
||
400
},
p
=
t
.
attr
(
"fp"
);
p
=
p
?
JSON
.
parse
(
p
):
""
,
r
({
url
:
"//m.yohobuy.com/activity/individuation?callback=?"
,
data
:
e
.
extend
({},
i
,
n
)}).
then
(
function
(
i
){
if
(
!
i
||!
i
.
length
)
return
void
(
o
?
e
(
c
[
0
]).
remove
():(
c
.
removeClass
(
"novisible"
),
a
.
hide
()));
if
(
i
.
length
=
i
.
length
-
i
.
length
%
d
,
o
)
for
(
var
r
=
isNaN
(
Number
(
o
))?
i
.
length
:
Number
(
o
),
s
=
0
;
s
<
r
;
s
++
){
var
l
=
ae
(
i
);
if
(
0
===
s
){
var
f
=
e
(
c
[
0
]),
h
=
oe
(
f
,
n
,
l
,
u
,
p
);
h
?
h
.
removeClass
(
"novisible"
):
f
.
remove
()}
else
{
var
m
=
oe
(
e
(
c
[
0
]).
clone
(),
n
,
l
,
u
,
p
);
m
&&
(
m
.
removeClass
(
"novisible"
),
m
.
appendTo
(
t
))}}
else
{
for
(
var
g
=
1
;
g
<
i
.
length
;
g
++
)
c
.
last
().
after
(
c
.
clone
());
var
y
=
t
.
find
(
".feature-product-info"
);
y
.
each
(
function
(
t
,
o
){
var
a
=
e
(
o
);
oe
(
a
,
n
,
ae
(
i
),
u
,
p
)}),
y
.
removeClass
(
"novisible"
),
a
.
hide
()}},
function
(){
o
?
e
(
c
[
0
]).
remove
():(
c
.
removeClass
(
"novisible"
),
a
.
hide
())})}},
ce
=
function
(){
var
t
=
Q
.
getMktCode
();
R
.
sParamByIframe
(
"callback=jQueryMktCode&cover=1&mkt_code="
+
t
+
"&expires=604800000"
);
var
i
=
[];
e
(
"a"
).
each
(
function
(){
var
t
=
e
(
this
).
attr
(
"href"
);
!
t
||
/^#.*$/
.
test
(
t
)
||
/^javascript.*$/i
.
test
(
t
)
||
i
.
push
(
t
)});
var
n
=
0
,
o
=
setInterval
(
function
(){
if
(
++
n
>
3
)
return
void
clearInterval
(
o
);
window
.
_yas
&&
window
.
_yas
.
sendAppLogs
&&
window
.
appBaseLogs
&&
(
clearInterval
(
o
),
window
.
_yas
.
sendAppLogs
({
appop
:
"YB_H5_PAGE_AB_OPEN_L"
,
param
:
JSON
.
stringify
({
C_ID
:
R
.
queryString
().
yh_channel
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
ACTION_URL
:
i
,
CROWD_CODE
:
t
+
""
})},
!
0
),
e
(
"a"
).
click
(
function
(){
var
i
=
e
(
this
).
attr
(
"href"
);
!
i
||
/^#.*$/
.
test
(
i
)
||
/^javascript.*$/i
.
test
(
i
)
||
window
.
_yas
.
sendAppLogs
({
appop
:
"YB_H5_PAGE_AB_FLR_C"
,
param
:
JSON
.
stringify
({
C_ID
:
R
.
queryString
().
yh_channel
||
1
,
PAGE_URL
:
window
.
originUrl
,
PAGE_NAME
:
decodeURI
(
window
.
qs
.
title
||
document
.
title
),
F_URL
:
i
,
CROWD_CODE
:
t
+
""
})},
!
0
)}))},
1
e3
)},
de
=
function
(
t
){
e
(
".product-source"
).
each
(
function
(
i
,
n
){
n
=
e
(
n
);
var
o
=
n
.
attr
(
"condition"
);
if
(
o
){
o
=
JSON
.
parse
(
o
);
var
a
=
R
.
queryString
().
yh_channel
;
o
.
abtest
&&
(
ne
=!
0
),
a
&&
(
o
.
yh_channel
=
a
),
i
>
3
?
setTimeout
(
function
(){
re
(
n
,
t
,
o
)},
300
):
re
(
n
,
t
,
o
)}}),
ne
&&
ce
()},
se
=
{
init
:
function
(
e
){
de
(
!
e
&&
R
.
isApp
()?{
uid
:
""
,
udid
:
R
.
queryString
().
udid
||
""
}:{
uid
:
e
,
udid
:
Z
.
cookie
(
"_yasvd"
)})}};
e
(
function
(){
H
.
init
(),
Q
.
init
().
then
(
function
(
e
){
se
.
init
(
e
),
ie
.
init
(
e
),
Q
.
auth
(),
W
.
init
(),
R
.
init
()})});
var
ue
=
{
auth
:
Q
.
auth
,
favout
:
Q
.
favout
,
getMktCode
:
function
(){
return
Q
.
getMktCode
()},
getUid
:
function
(){
return
Q
.
uid
}},
pe
=
"function"
==
typeof
Symbol
&&
"symbol"
==
typeof
Symbol
.
iterator
?
function
(
e
){
return
typeof
e
}:
function
(
e
){
return
e
&&
"function"
==
typeof
Symbol
&&
e
.
constructor
===
Symbol
&&
e
!==
Symbol
.
prototype
?
"symbol"
:
typeof
e
};
!
function
(
e
){
"object"
===
(
"undefined"
==
typeof
module
?
"undefined"
:
pe
(
module
))
&&
"object"
===
pe
(
module
.
exports
)?
module
.
exports
=
e
():
"function"
==
typeof
define
&&
define
.
amd
?
define
([],
e
):
window
.
_jssdk
=
e
()}(
function
(){
return
ue
})}(
jQuery
);
...
...
Please
register
or
login
to post a comment