小编Max*_*s S的帖子

在不同的viewControllers中使用相同的UIWebView

TL; DR:我需要实现在多个ViewControllers之间共享的单例UIWebVIew.这个问题包含了我迄今为止的所有方法.

的appDelegate:

@property (strong, nonatomic) UIWebView *singleWebView;
Run Code Online (Sandbox Code Playgroud)

firstViewController:

@property (weak, nonatomic) IBOutlet UIWebView *webView;

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear: animated];
    NSLog(@"Removing webview from the first VC");

    [self.webView removeFromSuperview];
    self.webView.delegate = nil;

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.singleWebView = self.webView;

    self.webView = nil;
}

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *URL = [request URL];

    if ([[URL absoluteString] isEqualToString:@"myapp://postsShow"]) {
        [self performSegueWithIdentifier:@"postsShowSegue" sender:self];
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

PostsShowViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    AppDelegate *appDelegate = …
Run Code Online (Sandbox Code Playgroud)

objective-c uiwebview ios swift

12
推荐指数
1
解决办法
1055
查看次数

DOM对象不会成为jQuery对象

为什么我不能在下面的例子中使$(frame)成为jQuery对象?以下是我的chrome开发人员工具的输出.

console: mainFrame
output: <frame src=?"http:?/?/someurl.com" name=?"mainFrame">?
console: $(mainFrame).contents()
output: SyntaxError: Failed to execute 'querySelector' on 'Document': '[object HTMLFrameElement]' is not a valid selector.
Run Code Online (Sandbox Code Playgroud)

编辑:

回应评论......

$.toString()
"function $(selector, [startNode]) { [Command Line API] }"

typeof(mainFrame)
"object"

jQuery
ReferenceError: jQuery is not defined
Run Code Online (Sandbox Code Playgroud)

javascript jquery

11
推荐指数
1
解决办法
1万
查看次数

Rails omniauth-facebook未解决的问题

目前的omniauth-facebook似乎有一些问题,我想知道是否有人对它们有答案.

第一个问题是无效的凭证问题.由于此问题,我无法使用客户端授权登录我的应用程序.但是,这可以通过将facebook-omniauth降级到1.4.0版本来解决.(参考)

但是,现在我遇到第二个问题,NoAuthorizationCodeError,错误消息:

OmniAuth Strategies Facebook NoAuthorizationCodeError 
(must pass either a `code` parameter or a signed request 
(via `signed_request` parameter):
Run Code Online (Sandbox Code Playgroud)

这是在这里被问到的,但是接受的答案建议再次实际升级到1.4.1版本,这将使先前的无效凭证问题再次发生.所以这对我来说不是一个选择.

NoAuthorizationCodeError当我尝试通过Internet Explorer登录Facebook iFrame(从应用程序中心搜索我的应用程序)内的应用程序时,会发生这种情况.在chrome或firefox上一切正常.还有一个github问题确切地指出了这个问题,但还没有人提出答案.我也尝试降级到omniauth-facebook 1.3.0版本,但它没有任何区别.我也尝试传递signed_request如下参数:

window.location = '/auth/facebook/callback', 
{ signed_request: response.authResponse.signedRequest }
Run Code Online (Sandbox Code Playgroud)

但是,它没有任何区别(在IE上,错误仍然存​​在),我不确定这是否是将代码作为参数传递的正确方法(我该如何检查?)

我假设我的设置没有问题.我真的很感激这方面的任何帮助.

更新:

我升级到1.4.1版本没有无效的凭据问题,但当我通过Internet Explorer访问Facebook内的应用程序时仍然会出现NoAuthorizationCodeError.检查我的Github 问题.

更新:

我降级到1.4.0版本,并添加了signedRequest params.

<script>
function login() {
  FB.login(function(response) {
    if (response.authResponse) {
      window.location = '/auth/facebook/callback?' + $.param({ signed_request: response.authResponse.signedRequest })
    } 
  }, {scope: 'email,publish_stream,publish_actions'}); …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails omniauth facebook-javascript-sdk

10
推荐指数
1
解决办法
1387
查看次数

从UIBezierPath获取积分

在此输入图像描述

我通过以下方式绘制了上面的BezierPath://位置是用户触摸屏幕的位置.//位置将是CGPoint origin = CGPointMake(xStart,620.0)的最大值; CGPoint endpt = CGPointMake(xEnd,620.0); CGPoint midpt1 = midPointForPoints(原点,位置); CGPoint midpt2 = midPointForPoints(location,endpt);

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:origin];
[path addQuadCurveToPoint:location controlPoint:CGPointMake(midpt1.x, midpt1.y+50)];
[path addQuadCurveToPoint:endpt controlPoint:CGPointMake(midpt2.x, midpt2.y+50)];

[shapeLayer setPath:path.CGPath];
Run Code Online (Sandbox Code Playgroud)

现在,我想检索位于路径上的某些x坐标的y坐标.例如,给定x = 0.0,我想得到y = 0.0,或者给定x = 300.0,y = 50.0.

我看了一些像这个问题示例代码的参考文献,我仍然不确定.更新:基本上,我想做这样的事情. 在此输入图像描述

更新:关注 @ Fang的建议:

给出等式

X = (1-t)^2*X0 + 2*t*(1-t)*X1 + t^2 *X2
Run Code Online (Sandbox Code Playgroud)

我解决了

t = ((2.0 * x0 - x1) + sqrt(((-2.0 * x0 + x1) ** 2.0) 
- ((4 * (x0 - …
Run Code Online (Sandbox Code Playgroud)

bezier ios uibezierpath

9
推荐指数
1
解决办法
5245
查看次数

Jekyll:javascript中的液体标签

假设我有两个链接:"所有帖子"和"个人".当用户点击"个人"链接时,他应该只看到具有"个人"类别的帖子.现在,液体标签是{% for post in site.posts %}.我想知道是否有办法site.posts从javascript 访问变量,以便我可以听取click事件并动态过滤帖子.如果没有,我该怎么办?

javascript liquid jekyll

9
推荐指数
1
解决办法
4201
查看次数

将CSS中的样式应用于新附加的元素

我动态地向父div添加一个元素.

$('.some_div').append("<li class="hi">hey!</li>")
Run Code Online (Sandbox Code Playgroud)

在我的CSS中,

.hi {
  color: white;
}
Run Code Online (Sandbox Code Playgroud)

但是,由于<li class="hi">动态添加,因此CSS中定义的样式似乎不适用于该元素.所以,

$('.some_div').append("<li class='hi'>hey!</li>")
$('li.hi').css({"color":"white"});
Run Code Online (Sandbox Code Playgroud)

实际上会做到这一点,但对我来说这似乎是多余的,因为样式已在CSS文件中定义.这是唯一的方法吗?

更新:

$('.some_div').append('<li style="color:white" >hey!</li>')
Run Code Online (Sandbox Code Playgroud)

上面的方法可行,但由于样式已在单独的CSS文件中定义,因此它仍然是多余的.我的问题是,是否有办法避免这种冗余.

在CSS中,

.some_div > li {
  font-size: 20px;
  background-color: 30px;
  margin-right: 2px;
}

.hi {
  color: white;
}
Run Code Online (Sandbox Code Playgroud)

当我添加一个新元素时,所有这些都不会应用($).append(),所以我问是否有办法应用样式表中已经定义的样式,而不必在css()函数中重新定义它们.

html javascript css jquery

8
推荐指数
1
解决办法
2万
查看次数

Chrome应用验证失败,并显示chrome.runtime.identity.getAuthToken:无法加载授权页面

我在用户点击sign inChrome应用中的按钮时对用户进行身份验证.这会在Chrome中打开一个新页面,提示他们使用自己的Google帐户登录.然后,弹出窗口打开,询问我的应用程序请求的权限.当他们点击确定,应用程序收到token- 它一切正常,直到我切换到不同的区域设置.

当我测试在韩国语言环境的应用程序,token不确定的一个成功标志后,我进一步调查,我发现我的错误chrome.runtime.identity.getAuthToken: Authorization page could not be loaded.

extensions::lastError:133 Unchecked runtime.lastError while running identity.getAuthToken: Authorization page could not be loaded.
    at chrome-extension://APP_ID/foreground/bundle/app.js:29630:24
    at chrome-extension://APP_ID/foreground/bundle/app.js:28068:46
    at Object.loadUserPlaylists (chrome-extension://APP_ID/foreground/bundle/app.js:27679:13)
    at SidebarPlaylists.onSignInAndLoadUserPlaylists (chrome-extension://APP_ID/foreground/bundle/app.js:42014:19)
    at Object.invokeGuardedCallback (chrome-extension://APP_ID/foreground/bundle/app.js:11872:13)
    at executeDispatch (chrome-extension://APP_ID/foreground/bundle/app.js:11717:22)
    at Object.executeDispatchesInOrder (chrome-extension://APP_ID/foreground/bundle/app.js:11737:8)
Run Code Online (Sandbox Code Playgroud)

这可以防止任何在韩国的用户登录并使用我的Chrome应用.为什么会发生这种情况,我该如何解决?

更新:

添加以下权限不起作用:

"https://*.chromiumapp.org/*", "https://chromiumapp.org/",
"https://*.apps.googleusercontent.com/", "https://apps.googleusercontent.com/",
"https://apps.googleusercontent.com/", "https://apps.googleusercontent.com/",
"https://*.chromiumapp.org/*/*"
Run Code Online (Sandbox Code Playgroud)

UPDATE2:

我尝试使用launchWebAuthFlow()而不是identity.getAuthToken().

  chrome.identity.launchWebAuthFlow({
    url: "https://accounts.google.com/o/oauth2/v2/auth?scope=email&response_type=token&client_id=MY_CLIENT_ID&redirect_uri="+chrome.identity.getRedirectURL()+"&prompt=consent",
    interactive: true
  }, function(respUrl) {
    //respUrl is empty
    debugger;
    //getUserPlaylists(token, …
Run Code Online (Sandbox Code Playgroud)

google-chrome google-chrome-app

8
推荐指数
0
解决办法
1225
查看次数

在React组件中使用常规javascript库

我很好奇在React环境中使用常规javascript库(不是作为React组件编写)的最佳方法是什么.

例如,假设有一个javascript库将一个简单的小部件嵌入到我的网页中.说明如下:

  1. 在标题中包含加载标记.
  2. 将代码段嵌入到您想要的任何位置.

在普通网页中,我会执行以下操作:

<head>
    <script src="http://karaoke.com/source.js"></script>
</head>

<body>
    <h1>Hello look at my cool widget library</h1>
    <karaoke width="600" height="400" />
</body>
Run Code Online (Sandbox Code Playgroud)

如何在这样的React组件中实现相同的效果?

class MainView extends Component {
  render() {
    return (
      <div>
        <h1>I want to show my karaoke widget here, but how?</h1>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

8
推荐指数
1
解决办法
7642
查看次数

如何返回n对圆括号的所有有效组合?

def paren(n):
    lst = ['(' for x in range(n)]
    current_string = ''.join(lst)
    solutions = list()
    for i in range(len(current_string)+1):
        close(current_string, n, i, solutions)
    return solutions

def close(current_string, num_close_parens, index, solutions):
    """close parentheses recursively"""
    if num_close_parens == 0:
        if current_string not in solutions:
            solutions.append(current_string)
        return
    new_str = current_string[:index] + ')' + current_string[index:]
    if num_close_parens and is_valid(new_str[:index+1]):
        return close(new_str, num_close_parens-1, index+1, solutions)
    else:
        return close(current_string, num_close_parens, index+1, solutions)

def is_valid(part):
    """True if number of open parens >= number of close parens in …
Run Code Online (Sandbox Code Playgroud)

python recursion backtracking

7
推荐指数
2
解决办法
4110
查看次数

React Controlled与Uncontrolled输入

我按照React Form教程创建了以下组件:

export default class SignInForm extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      email: '',
      password: ''
    }

    this.onEmailChange = this.onEmailChange.bind(this)
    this.onPasswordChange = this.onPasswordChange.bind(this)
  }

  onEmailChange(event) {
    this.setState({email: event.target.value})
  }

  onPasswordChange(password) {
    this.setState({password: event.target.value})
  }

  render() {
    return (
      <form onSubmit={this.props.handleSubmit}>
        <div>
          <label>Email</label>
          <div>
            <input type="email"
              placeholder="you@gmail.com"
              onChange={this.onEmailChange}
              value={this.state.email}
            />
          </div>
        </div>
        <div>
          <label>Password</label>
          <div>
            <input type="password"
              placeholder="Password"
              onChange={this.onPasswordChange}
              value={this.state.password}
            />
          </div>
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

表单呈现后,我收到以下错误:

SignInForm正在更改密码类型的受控输入以使其不受控制.输入元素不应从受控切换到不受控制(反之亦然).决定在组件的使用寿命期间使用受控或不受控制的输入元素

我找不到我把它变成一个不受控制的组件的地方.我究竟做错了什么?

reactjs

7
推荐指数
1
解决办法
5818
查看次数