Это мой код, который я использую в своих проектах:
function isMobile() {
try {
if(/Android|webOS|iPhone|iPad|iPod|pocket|psp|kindle|avantgo|blazer|midori|Tablet|Palm|maemo|plucker|phone|BlackBerry|symbian|IEMobile|mobile|ZuneWP7|Windows Phone|Opera Mini/i.test(navigator.userAgent)) {
return true;
};
return false;
} catch(e){ console.log("Error in isMobile"); return false; }
}
Я успешно собрал его, добавив ,?>
в Matcher
в SubMatcher.with
:
class SubMatcher extends BaseMatcher {
@Override
public SubMatcher with(Matcher<?,?> matcher) {
return this;
}
}
Без этого сигнатура метода отличается от базовой. Интересно, есть ли ошибка в проверке @Override
, которая этого не замечает.
Текущее имя пользователя и домен Windows
и этот поток, похоже, подтверждают, что для этого нет собственного способа. Затем поток предлагает «вставить» текущее имя пользователя ASP.NET со страницы ASP.NET, на которой «размещается» приложение Silverlight. в само приложение Silverlight до его запуска в контексте клиентской машины. Конечно, даже если это сработает, он предоставит вам только имя пользователя ASP.NET либо из форм ASP.NET, либо из аутентификации на основе Windows, а не имя пользователя Windows для текущего пользователя клиентской машины. .
в само приложение Silverlight до его запуска в контексте клиентской машины. Конечно, даже если это сработает, он предоставит вам только имя пользователя ASP.NET либо из форм ASP.NET, либо из аутентификации на основе Windows, а не имя пользователя Windows для текущего пользователя клиентской машины. . в само приложение Silverlight до его запуска в контексте клиентской машины. Конечно, даже если это сработает, он предоставит вам только имя пользователя ASP.NET либо из форм ASP.NET, либо из аутентификации на основе Windows, а не имя пользователя Windows для текущего пользователя клиентской машины. .в соответствии с этим сообщением это невозможно в javascript, поэтому я думаю, что вам не повезло: http://bytes.com/topic/javascript/answers/616501-how-get-windows-username-using-javascripts
звучит так, как будто реального способа сделать это нет.
Этим способом можно обойтись.
1) Создайте приложение веб-службы asp.net.
2) Реализуйте веб-службу и метод для вызова из приложения silverlight.
[WebMethod]
public string GetClientUserName()
{
return System.Web.HttpContext.Current.User.Identity.Name.ToString();
}
3) Разверните это приложение веб-службы на веб-сервере. Не разрешайте анонимному пользователю доступ к нему.
4) Добавьте эту службу в приложение Silverlight. (Добавить ссылку на службу)
5) Теперь вы можете вызвать этот метод и получить имя пользователя из всего приложения Silverlight.
Я решил поделиться этим кодом, который, кажется, работает (YMMV). Он вдохновлен ответом CraigTP и его ссылками. Я знаю, что это напрямую не отвечает на вопрос о работе на статической веб-странице, но похоже, что OP принял компромисс APSX.
На моей странице ASPX, на которой размещается Silverlight:
<head>
<!-- ...snip... -->
<script runat="server" language="c#">
void Page_Load()
{
this.UsernameField.Value = User.Identity.Name;
}
</script>
</head>
<body>
<input type="hidden" ID="UsernameField" runat="server" />
<!-- ...snip... -->
</body>
В моем коде Silverlight C #:
private string GetCurrentUserName()
{
HtmlDocument doc = HtmlPage.Document;
if (doc == null)
{
return string.Empty;
}
HtmlElement elm = doc.GetElementById("UsernameField");
if (elm == null)
{
return string.Empty;
}
return elm.GetAttribute("value");
}